Google Sheets Tips

IMPORTRANGE, QUERY, ARRAYFORMULA - 3 Hàm "Thần Thánh" Của Google Sheets

Tuân HoangTuân Hoang
27 tháng 2, 2026
Cập nhật: 25 tháng 3, 2026
11 phút đọc
IMPORTRANGE, QUERY, ARRAYFORMULA - 3 Hàm "Thần Thánh" Của Google Sheets

Tại sao 3 hàm này được gọi là "thần thánh"?

Nếu bạn đã quen với Google Sheets cơ bản (SUM, VLOOKUP, IF...), thì IMPORTRANGE, QUERY và ARRAYFORMULA chính là bước nhảy vọt đưa bạn lên level "pro". Ba hàm này giải quyết 3 bài toán lớn nhất khi làm việc với dữ liệu:

Hàm Giải quyết vấn đề Tương đương
IMPORTRANGE Kéo dữ liệu từ file khác, liên kết nhiều spreadsheet Linked Tables trong database
QUERY Truy vấn, lọc, sắp xếp, nhóm dữ liệu SQL SELECT trong database
ARRAYFORMULA Áp dụng 1 công thức cho toàn bộ cột, không cần copy Computed columns

Đặc biệt, khi kết hợp cả 3 hàm, bạn có thể xây dựng hệ thống quản lý dữ liệu phức tạp mà không cần biết lập trình - điều mà trước đây chỉ database hoặc phần mềm chuyên dụng mới làm được.

Phần 1: IMPORTRANGE - Liên kết dữ liệu giữa các file

Cú pháp cơ bản

=IMPORTRANGE("spreadsheet_url", "sheet_name!range")

// Ví dụ thực tế:
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/abc123xyz/edit", "Doanh thu!A1:F100")

Lưu ý quan trọng:

  • Lần đầu dùng IMPORTRANGE, bạn phải cho phép truy cập (click "Allow access" trên ô hiện lỗi #REF!)
  • Chỉ cần cho phép 1 lần cho mỗi cặp spreadsheet
  • URL phải là URL đầy đủ hoặc chỉ phần spreadsheet_key
  • Dữ liệu cập nhật tự động nhưng có thể chậm vài phút

10 ví dụ thực tế IMPORTRANGE

1. Kéo toàn bộ dữ liệu từ file khác

// Kéo bảng doanh thu từ file "Bán hàng 2026"
=IMPORTRANGE("1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms", "Sheet1!A:F")

// Kéo cột cụ thể (chỉ tên sản phẩm và doanh thu)
=IMPORTRANGE("1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms", "Sheet1!B:B,E:E")

2. Tổng hợp dữ liệu từ nhiều chi nhánh

// File tổng hợp - kéo dữ liệu từ 3 chi nhánh
// Sheet "HN":
=IMPORTRANGE(url_hanoi, "Doanh thu!A2:E")

// Sheet "HCM":
=IMPORTRANGE(url_hochiminh, "Doanh thu!A2:E")

// Sheet "DN":
=IMPORTRANGE(url_danang, "Doanh thu!A2:E")

3. Dùng Named Range cho gọn

// Đặt URL vào ô tham chiếu (ô A1 sheet Config)
// Config!A1 = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms"

// Rồi dùng:
=IMPORTRANGE(Config!$A$1, "Sheet1!A:F")

// Khi cần đổi URL, chỉ sửa 1 ô Config!A1

4. Kéo dữ liệu động (range không cố định)

// Kéo dữ liệu từ dòng 2 đến hết (không giới hạn)
=IMPORTRANGE(url, "Data!A2:E")

// Kéo chỉ 1 ô cụ thể (tổng doanh thu)
=IMPORTRANGE(url, "Dashboard!B5")

Giới hạn IMPORTRANGE:

  • Tối đa 50 IMPORTRANGE trong 1 spreadsheet
  • Mỗi lần kéo tối đa vài ngàn dòng (nếu quá nhiều sẽ chậm)
  • Không thể kéo từ file không được share quyền View
  • Dữ liệu là read-only - không edit được ở file đích

Phần 2: QUERY - SQL trên Google Sheets

QUERY là hàm mạnh nhất trong Google Sheets - cho phép bạn truy vấn dữ liệu giống SQL nhưng ngay trong spreadsheet. Nếu bạn biết SQL thì sẽ thấy rất quen thuộc, nếu chưa biết thì cũng dễ học.

Cú pháp

=QUERY(data, query_string, headers)

// data: vùng dữ liệu (A1:F100 hoặc range từ IMPORTRANGE)
// query_string: câu truy vấn (giống SQL)
// headers: số dòng header (thường = 1)

Các mệnh đề QUERY phổ biến

Mệnh đề Chức năng SQL tương đương
SELECTChọn cột hiển thịSELECT
WHERELọc dữ liệu theo điều kiệnWHERE
GROUP BYNhóm dữ liệuGROUP BY
ORDER BYSắp xếp kết quảORDER BY
LIMITGiới hạn số dòngLIMIT
PIVOTXoay dữ liệu (pivot table)PIVOT
LABELĐổi tên cột headerAS alias
FORMATĐịnh dạng outputFORMAT()

15 ví dụ QUERY từ cơ bản đến nâng cao

Cơ bản: SELECT + WHERE

// Giả sử data A:F gồm: Ngày | Sản phẩm | Danh mục | Số lượng | Đơn giá | Thành tiền

// 1. Lấy tất cả cột
=QUERY(A:F, "SELECT *", 1)

// 2. Lấy cột cụ thể (Sản phẩm + Thành tiền)
=QUERY(A:F, "SELECT B, F", 1)

// 3. Lọc theo điều kiện (đơn hàng > 1 triệu)
=QUERY(A:F, "SELECT B, F WHERE F > 1000000", 1)

// 4. Lọc theo text (danh mục = "Điện tử")
=QUERY(A:F, "SELECT * WHERE C = 'Điện tử'", 1)

// 5. Nhiều điều kiện (AND/OR)
=QUERY(A:F, "SELECT * WHERE C = 'Điện tử' AND F > 500000", 1)
=QUERY(A:F, "SELECT * WHERE C = 'Điện tử' OR C = 'Thời trang'", 1)

Trung bình: GROUP BY + ORDER BY

// 6. Tổng doanh thu theo danh mục
=QUERY(A:F, "SELECT C, SUM(F) GROUP BY C", 1)

// 7. Tổng doanh thu theo danh mục, sắp xếp giảm dần
=QUERY(A:F, "SELECT C, SUM(F) GROUP BY C ORDER BY SUM(F) DESC", 1)

// 8. Đếm số đơn hàng theo sản phẩm
=QUERY(A:F, "SELECT B, COUNT(B) GROUP BY B ORDER BY COUNT(B) DESC", 1)

// 9. Top 5 sản phẩm bán chạy nhất
=QUERY(A:F, "SELECT B, SUM(D) GROUP BY B ORDER BY SUM(D) DESC LIMIT 5", 1)

// 10. Trung bình đơn giá theo danh mục
=QUERY(A:F, "SELECT C, AVG(E) GROUP BY C LABEL AVG(E) 'Giá TB'", 1)

Nâng cao: Lọc ngày tháng + PIVOT

// 11. Lọc theo ngày (tháng 2/2026)
=QUERY(A:F, "SELECT * WHERE A >= date '2026-02-01' AND A < date '2026-03-01'", 1)

// 12. Lọc theo tháng hiện tại (động)
=QUERY(A:F, "SELECT * WHERE MONTH(A)+1 = "&MONTH(TODAY())&" AND YEAR(A) = "&YEAR(TODAY()), 1)

// 13. PIVOT - Doanh thu theo danh mục theo tháng
=QUERY(A:F, "SELECT MONTH(A)+1, SUM(F) GROUP BY MONTH(A)+1 PIVOT C", 1)

// 14. Tìm kiếm gần đúng (CONTAINS, LIKE)
=QUERY(A:F, "SELECT * WHERE B CONTAINS 'iPhone'", 1)
=QUERY(A:F, "SELECT * WHERE B LIKE '%Samsung%'", 1)

// 15. Đổi tên header + format số
=QUERY(A:F,
  "SELECT C, SUM(F), COUNT(B)
   GROUP BY C
   ORDER BY SUM(F) DESC
   LABEL C 'Danh mục', SUM(F) 'Tổng DT', COUNT(B) 'Số đơn'
   FORMAT SUM(F) '#,##0'",
  1
)

Mẹo QUERY chuyên gia:

  • Cột tham chiếu bằng chữ cái: A, B, C... (không phải tên cột)
  • Text phải trong nháy đơn: WHERE C = 'Điện tử'
  • Ngày phải dùng format date: date '2026-02-01'
  • Nối biến bằng &: "...WHERE A = '"&B1&"'"
  • MONTH() trả 0-11: cần MONTH(A)+1 để ra tháng thực

Phần 3: ARRAYFORMULA - Một công thức cho cả cột

ARRAYFORMULA cho phép bạn viết 1 công thức duy nhất áp dụng cho toàn bộ cột, thay vì copy-paste xuống từng dòng. Khi có dòng dữ liệu mới, kết quả tự động tính - không cần kéo công thức.

Cú pháp

=ARRAYFORMULA(expression)

// Thay vì copy công thức =D2*E2 xuống hàng trăm dòng:
// Chỉ cần 1 công thức ở F2:
=ARRAYFORMULA(D2:D*E2:E)

10 ví dụ ARRAYFORMULA thiết thực

// 1. Tính thành tiền = Số lượng × Đơn giá (cả cột)
=ARRAYFORMULA(IF(LEN(D2:D), D2:D * E2:E, ""))

// 2. Tự động đánh số thứ tự
=ARRAYFORMULA(IF(LEN(B2:B), ROW(B2:B)-1, ""))

// 3. Ghép họ tên
=ARRAYFORMULA(IF(LEN(A2:A), A2:A & " " & B2:B, ""))

// 4. Tính thuế VAT 10%
=ARRAYFORMULA(IF(LEN(F2:F), F2:F * 0.1, ""))

// 5. IF lồng nhau - Phân loại khách hàng
=ARRAYFORMULA(IF(LEN(F2:F),
  IF(F2:F >= 10000000, "VIP",
    IF(F2:F >= 5000000, "Tiềm năng", "Thường")),
  ""))

// 6. Trích xuất tên miền từ email
=ARRAYFORMULA(IF(LEN(C2:C),
  RIGHT(C2:C, LEN(C2:C) - FIND("@", C2:C)),
  ""))

// 7. Đếm số ngày từ ngày tạo đến hôm nay
=ARRAYFORMULA(IF(LEN(A2:A), TODAY() - A2:A, ""))

// 8. Format số tiền có dấu phẩy
=ARRAYFORMULA(IF(LEN(F2:F), TEXT(F2:F, "#,##0"), ""))

// 9. Tạo link Google Maps từ địa chỉ
=ARRAYFORMULA(IF(LEN(G2:G),
  "https://www.google.com/maps/search/" & ENCODEURL(G2:G),
  ""))

// 10. VLOOKUP cho cả cột (thay vì copy từng dòng)
=ARRAYFORMULA(IF(LEN(C2:C),
  VLOOKUP(C2:C, DanhMuc!A:B, 2, FALSE),
  ""))

Tại sao cần IF(LEN(...)) bọc ngoài?

Nếu không bọc, ARRAYFORMULA sẽ tính cho tất cả dòng trống trong cột, gây ra kết quả 0 hoặc lỗi tràn. IF(LEN(A2:A), ..., "") đảm bảo chỉ tính khi ô A có dữ liệu.

Kết hợp 3 hàm: Sức mạnh đỉnh cao

Khi kết hợp cả 3 hàm, bạn có thể xây dựng hệ thống báo cáo tự động cực kỳ mạnh mẽ:

Combo 1: QUERY + IMPORTRANGE - Truy vấn dữ liệu từ file khác

// Kéo và lọc dữ liệu từ file khác trong 1 công thức
=QUERY(
  IMPORTRANGE("spreadsheet_url", "Data!A:F"),
  "SELECT Col1, Col2, Col6
   WHERE Col3 = 'Điện tử' AND Col6 > 1000000
   ORDER BY Col6 DESC",
  1
)

// LƯU Ý: Khi dùng IMPORTRANGE trong QUERY,
// tên cột là Col1, Col2... (không phải A, B...)

Combo 2: QUERY + ARRAYFORMULA - Báo cáo tổng hợp tự động

// Tạo bảng tổng hợp 12 tháng tự động
=ARRAYFORMULA(
  QUERY(
    {MONTH(A2:A)+1, B2:B, F2:F},
    "SELECT Col1, SUM(Col3)
     WHERE Col1 IS NOT NULL
     GROUP BY Col1
     ORDER BY Col1
     LABEL Col1 'Tháng', SUM(Col3) 'Doanh thu'",
    0
  )
)

Combo 3: Cả 3 hàm - Dashboard báo cáo liên chi nhánh

// Bước 1: Gộp dữ liệu 3 chi nhánh (dùng ARRAYFORMULA + dấu {})
=ARRAYFORMULA({
  IMPORTRANGE(url_hn, "Data!A2:F"),
  "Hà Nội";
  IMPORTRANGE(url_hcm, "Data!A2:F"),
  "TP.HCM";
  IMPORTRANGE(url_dn, "Data!A2:F"),
  "Đà Nẵng"
})

// Bước 2: QUERY trên dữ liệu đã gộp
=QUERY(
  MergedData!A:G,
  "SELECT G, SUM(F)
   WHERE G IS NOT NULL
   GROUP BY G
   ORDER BY SUM(F) DESC
   LABEL G 'Chi nhánh', SUM(F) 'Tổng DT'",
  1
)

Bài tập thực hành: Hệ thống quản lý đơn hàng

Áp dụng cả 3 hàm vào một bài toán thực tế - quản lý đơn hàng cho cửa hàng online:

Cấu trúc dữ liệu (Sheet "Đơn hàng"):

A: Mã đơn | B: Ngày | C: Khách hàng | D: Sản phẩm | E: Số lượng | F: Đơn giá | G: Thành tiền | H: Trạng thái | I: Khu vực

// Cột G: Tự động tính thành tiền (ARRAYFORMULA)
=ARRAYFORMULA(IF(LEN(E2:E), E2:E * F2:F, ""))

// Sheet "Báo cáo": Top 10 khách hàng mua nhiều nhất (QUERY)
=QUERY('Đơn hàng'!A:I,
  "SELECT C, COUNT(A), SUM(G)
   WHERE H = 'Hoàn thành'
   GROUP BY C
   ORDER BY SUM(G) DESC
   LIMIT 10
   LABEL C 'Khách hàng', COUNT(A) 'Số đơn', SUM(G) 'Tổng mua'",
  1)

// Doanh thu theo khu vực và tháng (QUERY + PIVOT)
=QUERY('Đơn hàng'!A:I,
  "SELECT I, SUM(G)
   WHERE H = 'Hoàn thành'
   GROUP BY I
   PIVOT MONTH(B)+1
   LABEL I 'Khu vực'",
  1)

// Kéo danh sách sản phẩm từ file kho (IMPORTRANGE)
=IMPORTRANGE(url_kho, "Sản phẩm!A:C")

Lỗi thường gặp và cách khắc phục

Lỗi Nguyên nhân Cách sửa
#REF! IMPORTRANGE chưa được cho phép Click ô lỗi → "Allow access"
#VALUE! QUERY syntax sai Kiểm tra nháy đơn/đôi, tên cột
#N/A Không tìm thấy dữ liệu khớp Kiểm tra điều kiện WHERE
Kết quả tràn ARRAYFORMULA trả quá nhiều dòng Thêm IF(LEN()) hoặc giới hạn range
Col1, Col2... QUERY trên IMPORTRANGE dùng Col thay A,B Đổi A→Col1, B→Col2, C→Col3...
Chậm/Loading Quá nhiều IMPORTRANGE hoặc data lớn Giới hạn range, giảm số IMPORTRANGE

So sánh hiệu năng: Khi nào dùng hàm nào?

Bài toán Dùng hàm Tại sao
Lấy dữ liệu từ file khác IMPORTRANGE Chỉ hàm này làm được
Lọc + sắp xếp dữ liệu QUERY Nhanh hơn FILTER, linh hoạt hơn
Tổng hợp theo nhóm (GROUP BY) QUERY SUMIFS cần nhiều cột, QUERY gọn hơn
Tính công thức cho cả cột ARRAYFORMULA Không cần copy, tự mở rộng
Lọc đơn giản (1-2 điều kiện) FILTER FILTER đơn giản hơn QUERY cho lọc đơn
Tra cứu giá trị VLOOKUP/INDEX-MATCH Chuyên dụng cho lookup, nhanh hơn QUERY

Câu hỏi thường gặp (FAQ)

QUERY có thay thế hoàn toàn VLOOKUP không?

Không hoàn toàn. QUERY mạnh hơn cho tổng hợp/nhóm/lọc phức tạp, nhưng VLOOKUP/INDEX-MATCH vẫn nhanh hơn và dễ dùng hơn cho tra cứu đơn giản (1 giá trị). Dùng QUERY khi cần WHERE + GROUP BY, dùng VLOOKUP khi chỉ cần tìm 1 giá trị.

IMPORTRANGE có an toàn không? Người khác có thấy dữ liệu file gốc?

An toàn. IMPORTRANGE chỉ kéo dữ liệu bạn chỉ định (range cụ thể), không share toàn bộ file. Người xem file đích chỉ thấy dữ liệu đã kéo, không truy cập được file nguồn trừ khi được share riêng.

ARRAYFORMULA có làm file chậm không?

Có thể, nếu dùng trên toàn bộ cột (A:A thay vì A2:A5000). Mẹo: giới hạn range cụ thể, tránh ARRAYFORMULA lồng quá nhiều hàm phức tạp, và tránh dùng quá 20-30 ARRAYFORMULA trong 1 file.

Tại sao QUERY trả lỗi khi lọc cột có cả số và text?

QUERY yêu cầu cột phải có kiểu dữ liệu đồng nhất. Nếu cột vừa có số vừa có text, Google Sheets sẽ chọn kiểu chiếm đa số và bỏ qua kiểu còn lại. Fix: Đảm bảo cột chỉ chứa 1 kiểu dữ liệu, hoặc dùng TO_TEXT() để convert.

Có thể dùng biến trong QUERY không?

Có! Dùng toán tử & để nối ô tham chiếu vào chuỗi query. Ví dụ: =QUERY(A:F, "SELECT * WHERE C = '"&B1&"'", 1) - lọc theo giá trị ô B1.

Kết luận

IMPORTRANGE, QUERY và ARRAYFORMULA là bộ 3 hàm nền tảng biến Google Sheets từ bảng tính đơn giản thành công cụ quản lý dữ liệu mạnh mẽ. Khi thành thạo 3 hàm này, bạn có thể:

  • Liên kết dữ liệu giữa nhiều file mà không copy-paste
  • Truy vấn, lọc, nhóm dữ liệu như database chuyên nghiệp
  • Tự động hóa tính toán cho hàng nghìn dòng mà không cần lập trình
  • Xây dựng hệ thống báo cáo real-time liên chi nhánh

Hãy bắt đầu với từng hàm riêng lẻ, rồi dần kết hợp chúng. Thực hành là cách học nhanh nhất!

Muốn hệ thống quản lý chuyên nghiệp hơn?

SheetStore cung cấp phần mềm quản lý bán hàng được xây dựng trên Google Sheets - sử dụng QUERY, ARRAYFORMULA và nhiều công thức nâng cao. Giá chỉ từ 699K.

Xem sản phẩm SheetStore

Bài viết được cập nhật lần cuối: Tháng 2/2026. Nội dung được biên soạn bởi đội ngũ chuyên gia Google Sheets tại SheetStore.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận