Hướng dẫn

Hàm QUERY Google Sheets — Hướng Dẫn Chi Tiết Với 20+ Ví Dụ Thực Tế (2026)

Tuân HoangTuân Hoang
30 tháng 5, 2026
Cập nhật: 2 tháng 6, 2026
18 phút đọc
Ảnh minh họa bài viết: Hàm QUERY Google Sheets — Hướng Dẫn Chi Tiết Với 20+ Ví Dụ Thực Tế (2026)

QUERY là hàm mạnh nhất của Google Sheets — học một lần, dùng cả đời.

Bài viết tổng hợp cú pháp đầy đủ, 20+ ví dụ thực tế từ cơ bản đến nâng cao, các lỗi thường gặp và cách khắc phục. Phù hợp cho người làm báo cáo, kế toán, marketing, vận hành.

1. Hàm QUERY Là Gì?

QUERY là hàm độc đáo của Google Sheets, sử dụng Google Visualization API Query Language — một biến thể của SQL — để truy vấn dữ liệu ngay trong bảng tính. Thay vì kết hợp 5-7 hàm FILTER, SORT, SUMIF, COUNTIF, INDEX để xử lý dữ liệu, bạn chỉ cần một câu lệnh QUERY duy nhất.

Đây là điều Excel không có. Trong khi người dùng Excel phải viết Power Query hoặc VBA cho các tác vụ tương đương, người dùng Google Sheets chỉ cần một dòng công thức. Nhờ đó, QUERY trở thành kỹ năng phân biệt giữa "người dùng cơ bản" và "người dùng chuyên nghiệp" trên Google Sheets.

Khi nào nên dùng QUERY:

  • Lọc dữ liệu theo nhiều điều kiện phức tạp (AND, OR, LIKE)
  • Tổng hợp doanh thu theo nhóm sản phẩm, theo tháng, theo nhân viên
  • Trích xuất top N kết quả với điều kiện sắp xếp
  • Tạo dashboard động cập nhật theo input của người xem
  • Hợp nhất dữ liệu từ nhiều sheet kết hợp với IMPORTRANGE

2. Cú Pháp Chi Tiết

=QUERY(data, query, [headers])

Tham số:

  • data — Vùng dữ liệu nguồn (ví dụ A1:E1000) hoặc mảng động (ARRAY).
  • query — Chuỗi câu lệnh SQL-like, đặt trong dấu nháy kép. Hỗ trợ 10 mệnh đề: SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT, OFFSET, LABEL, FORMAT, OPTIONS.
  • headers — Số dòng tiêu đề (mặc định -1 = tự nhận diện). Đặt 1 để chỉ định 1 dòng tiêu đề.

Lưu ý quan trọng: Khi tham chiếu vùng A1:E1000, các cột được gọi là A, B, C, D, E. Khi tham chiếu mảng động (ví dụ kết quả của ARRAYFORMULA hoặc IMPORTRANGE), bạn phải dùng Col1, Col2, Col3...

3. 10 Ví Dụ Cơ Bản

Ví dụ 1: SELECT toàn bộ dữ liệu

=QUERY(A1:E100, "SELECT *", 1)

Sao chép toàn bộ dữ liệu sang vị trí khác — hữu ích khi cần "snapshot" dữ liệu mà vẫn liên kết động.

Ví dụ 2: SELECT cột cụ thể

=QUERY(A1:E100, "SELECT A, C, E", 1)

Chọn ra 3 cột tên, ngày, doanh thu — bỏ qua cột không cần thiết.

Ví dụ 3: Lọc theo WHERE

=QUERY(A1:E100, "SELECT * WHERE C > 1000000", 1)

Chỉ hiển thị các dòng có doanh thu (cột C) trên 1 triệu.

Ví dụ 4: Lọc theo text với điều kiện AND

=QUERY(A1:E100, "SELECT * WHERE B = 'Hà Nội' AND C > 500000", 1)

Kết hợp nhiều điều kiện. Chú ý: text phải đặt trong nháy đơn.

Ví dụ 5: Sắp xếp với ORDER BY

=QUERY(A1:E100, "SELECT A, C ORDER BY C DESC LIMIT 10", 1)

Top 10 doanh thu cao nhất — phổ biến trong báo cáo bán hàng.

Ví dụ 6: Đếm với COUNT

=QUERY(A1:E100, "SELECT COUNT(A) WHERE B = 'TP.HCM'", 1)

Đếm số đơn hàng phát sinh ở TP.HCM.

Ví dụ 7: Tổng với SUM và GROUP BY

=QUERY(A1:E100, "SELECT B, SUM(C) GROUP BY B", 1)

Tổng doanh thu theo từng thành phố — báo cáo nhanh không cần Pivot Table.

Ví dụ 8: Tìm gần đúng với LIKE

=QUERY(A1:E100, "SELECT * WHERE A LIKE '%Nguyễn%'", 1)

Tìm tất cả khách hàng có "Nguyễn" trong tên. Dấu % là wildcard.

Ví dụ 9: Lọc theo ngày tháng

=QUERY(A1:E100, "SELECT * WHERE D >= date '2026-01-01' AND D <= date '2026-03-31'", 1)

Lọc dữ liệu quý 1/2026. Ngày luôn dùng format ISO YYYY-MM-DD.

Ví dụ 10: Đặt nhãn cột với LABEL

=QUERY(A1:E100, "SELECT B, SUM(C) GROUP BY B LABEL B 'Thành phố', SUM(C) 'Tổng doanh thu'", 1)

Đặt tên tiếng Việt cho cột kết quả — báo cáo trông chuyên nghiệp.

4. 10 Ví Dụ Nâng Cao

Ví dụ 11: PIVOT — Xoay bảng động

=QUERY(A1:E100, "SELECT B, SUM(C) GROUP BY B PIVOT MONTH(D)+1", 1)

Tạo bảng chéo: hàng là thành phố, cột là tháng, ô là tổng doanh thu. Pivot Table thực thụ trong một dòng công thức.

Ví dụ 12: Tham chiếu ô động

=QUERY(A1:E100, "SELECT * WHERE B = '" & G1 & "' AND C > " & H1, 1)

Báo cáo động — người dùng nhập thành phố vào G1, ngưỡng doanh thu vào H1, kết quả tự cập nhật.

Ví dụ 13: Kết hợp với IMPORTRANGE

=QUERY(IMPORTRANGE("URL", "Data!A:E"), "SELECT Col1, SUM(Col3) WHERE Col2='HN' GROUP BY Col1", 1)

Truy vấn dữ liệu từ file Google Sheets khác. Lưu ý dùng Col1, Col2 thay vì A, B vì input là mảng.

Ví dụ 14: NOT NULL — Bỏ dòng trống

=QUERY(A1:E1000, "SELECT * WHERE A IS NOT NULL", 1)

Bỏ qua các dòng trống — hữu ích khi range A1:E1000 lớn hơn dữ liệu thực tế.

Ví dụ 15: OFFSET — Phân trang

=QUERY(A1:E100, "SELECT * ORDER BY C DESC LIMIT 10 OFFSET 10", 1)

Lấy dòng 11-20 — phân trang kết quả trên dashboard.

Ví dụ 16: Định dạng cột FORMAT

=QUERY(A1:E100, "SELECT B, SUM(C) GROUP BY B FORMAT SUM(C) '#,##0₫'", 1)

Định dạng tiền tệ Việt Nam đồng ngay trong công thức QUERY.

Ví dụ 17: Trung bình AVG, lớn nhất MAX

=QUERY(A1:E100, "SELECT B, AVG(C), MAX(C), MIN(C) GROUP BY B", 1)

Thống kê đầy đủ: doanh thu trung bình, cao nhất, thấp nhất theo từng thành phố.

Ví dụ 18: Trích xuất theo năm, tháng, ngày

=QUERY(A1:E100, "SELECT YEAR(D), MONTH(D)+1, SUM(C) GROUP BY YEAR(D), MONTH(D)+1", 1)

Báo cáo doanh thu theo từng tháng, từng năm. MONTH(D)+1 vì JavaScript đếm tháng từ 0.

Ví dụ 19: Kết hợp với ARRAYFORMULA

=QUERY({A:A, B:B, ARRAYFORMULA(C:C*1.1)}, "SELECT Col1, Col2, Col3 WHERE Col3 > 0", 1)

Tính cột mới (giá tăng 10%) và truy vấn cùng lúc.

Ví dụ 20: WHERE với danh sách MATCHES

=QUERY(A1:E100, "SELECT * WHERE B MATCHES 'Hà Nội|TP.HCM|Đà Nẵng'", 1)

Lọc theo nhiều giá trị dùng RegEx — gọn hơn rất nhiều so với chuỗi OR.

5. Kết Hợp QUERY Với Hàm Khác

Sức mạnh thực sự của QUERY thể hiện khi kết hợp với các hàm khác của Google Sheets:

  • QUERY + IMPORTRANGE: Hợp nhất báo cáo từ 5-10 file riêng — phù hợp doanh nghiệp đa chi nhánh.
  • QUERY + ARRAYFORMULA: Tạo cột tính toán động trong input cho QUERY.
  • QUERY + IFERROR: Xử lý lỗi khi truy vấn không trả về kết quả — tránh #N/A hiển thị xấu trên dashboard.
  • QUERY + UNIQUE: Lấy danh sách giá trị duy nhất cho dropdown filter.
  • QUERY lồng QUERY: Truy vấn nhiều bước, mỗi bước xử lý một logic.

Triển khai báo cáo thực tế cho doanh nghiệp của bạn

Đội ngũ SheetStore giúp setup dashboard quản lý bán hàng, kho, nhân sự trên Google Sheets — bắt đầu chỉ từ 699.000đ/tháng.

Đăng Ký Demo Miễn Phí

6. Các Lỗi Thường Gặp

Lỗi Nguyên nhân Cách khắc phục
#VALUE! Cú pháp query sai, thiếu dấu cách, dấu nháy không khớp Kiểm tra dấu nháy đơn/đôi; nháy đôi bao quanh query, nháy đơn cho giá trị text bên trong
#N/A — Empty output WHERE không khớp dòng nào Bọc IFERROR(QUERY(...), "Không có dữ liệu")
"Column ID 'A' không tồn tại" Dùng A,B,C cho input là mảng động Đổi sang Col1, Col2, Col3
Kết quả thiếu dòng Cột trộn lẫn số và text → QUERY auto-detect kiểu dữ liệu sai Đồng nhất kiểu dữ liệu cột; hoặc thêm options no_format
"Cannot use GROUP BY without aggregation" SELECT cột không có hàm tổng hợp khi dùng GROUP BY Mọi cột SELECT phải hoặc nằm trong GROUP BY, hoặc dùng SUM/AVG/COUNT/MAX/MIN

7. Mẹo Tối Ưu Hiệu Năng

  • Giới hạn range: Dùng A1:E1000 thay vì A:E nếu dữ liệu chỉ 1000 dòng — tăng tốc 3-5 lần.
  • Tránh QUERY lồng IMPORTRANGE nhiều lớp: Mỗi lớp IMPORTRANGE đều gọi API ngoài; nên cache kết quả vào sheet trung gian.
  • Dùng LIMIT khi preview: LIMIT 10 trong lúc viết công thức, bỏ ra khi xong.
  • Tận dụng OFFSET cho phân trang: Thay vì hiển thị 10000 dòng, hiển thị 50 dòng/trang.
  • Đặt query trong ô riêng: Lưu chuỗi câu lệnh trong G1, dùng =QUERY(A:E, G1) — dễ chỉnh sửa và test.

8. Câu Hỏi Thường Gặp

Hàm QUERY có khác gì SQL chuẩn?

Giống ở SELECT, WHERE, GROUP BY, ORDER BY. Khác: không có JOIN giữa 2 sheet (phải tự nối bằng VLOOKUP hoặc QUERY lồng); không có UNION (dùng dấu chấm phẩy giữa các mảng); không có subquery thực sự (mô phỏng bằng QUERY của QUERY).

QUERY có chạy chậm khi dữ liệu lớn không?

Google Sheets hoạt động tốt đến ~50.000 dòng. Trên ngưỡng này, nên cân nhắc tách dữ liệu thành nhiều sheet theo tháng/năm, hoặc chuyển sang BigQuery + Connected Sheets cho dữ liệu hàng triệu dòng.

Có thể dùng QUERY trên ứng dụng di động?

Có — Google Sheets app trên iOS/Android render đầy đủ kết quả QUERY. Tuy nhiên việc gõ chuỗi query dài trên mobile bất tiện; nên thiết kế công thức trên máy tính, mobile chỉ để xem kết quả.

QUERY có hỗ trợ tiếng Việt có dấu không?

Hỗ trợ đầy đủ Unicode. WHERE B = 'Đà Nẵng' hoạt động bình thường. Chú ý copy đúng kiểu chữ — chữ "đ" và "d" là khác nhau hoàn toàn.

Tôi nên học QUERY hay Pivot Table trước?

Pivot Table dễ học hơn với người mới. Nhưng nếu bạn làm báo cáo định kỳ, đầu tư học QUERY trong 1-2 tuần sẽ tiết kiệm hàng chục giờ mỗi tháng vì QUERY tự cập nhật khi dữ liệu thay đổi.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

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