Hướng dẫn

Hàm QUERY Google Sheets Nâng Cao: 15 Cú Pháp Pro Thay Thế 80% Công Thức 2026

Tuân HoangTuân Hoang
2 tháng 6, 2026
Cập nhật: 3 tháng 6, 2026
14 phút đọc
Ảnh minh họa bài viết: Hàm QUERY Google Sheets Nâng Cao: 15 Cú Pháp Pro Thay Thế 80% Công Thức 2026

QUERY là hàm "siêu năng lực" của Google Sheets — học đúng 15 cú pháp pro dưới đây, bạn thay thế được 80% công thức báo cáo phức tạp.

Bài viết tổng hợp 15 cú pháp QUERY nâng cao kèm ví dụ thực chiến: SELECT, WHERE, GROUP BY, PIVOT, LABEL, IMPORTRANGE — dùng được ngay cho dashboard bán hàng, kho, nhân sự.

1. QUERY Là Gì? Tại Sao Dân Pro Mê QUERY?

Hàm QUERY trong Google Sheets sử dụng ngôn ngữ Google Visualization API Query Language — gần giống SQL — để truy vấn dữ liệu trực tiếp trong sheet. Một công thức QUERY duy nhất có thể thay thế cùng lúc nhiều hàm FILTER, SORT, SUMIFS, COUNTIFS, hay thậm chí PIVOT TABLE.

Lý do dân pro chọn QUERY thay vì 10 công thức rời:

  • Một công thức ra cả báo cáo: Lọc + nhóm + sắp xếp + tính tổng trong cùng một cell duy nhất
  • Dữ liệu thay đổi tự cập nhật: Không cần refresh pivot, không cần copy-paste thủ công
  • Dễ bảo trì: Sửa một dòng QUERY thay vì sửa 20 công thức rải rác khắp sheet
  • Tích hợp IMPORTRANGE: Kéo dữ liệu từ file khác, xử lý ngay tại chỗ — không cần làm sheet trung gian
  • Hỗ trợ array tự nhiên: Kết quả tự "đổ" xuống nhiều dòng/cột mà không cần ARRAYFORMULA

2. Cú Pháp QUERY Cơ Bản Cần Nhớ

Cú pháp tổng quát:

=QUERY(data, "SELECT ... WHERE ... GROUP BY ... ORDER BY ... LIMIT ...", [headers])

Trong đó:

  • data: vùng dữ liệu nguồn (A:E, A1:E1000, hoặc {Sheet1!A:E; Sheet2!A:E})
  • query: chuỗi truy vấn theo cú pháp Google Query Language
  • headers: số dòng tiêu đề (1 = có header, -1 = tự đoán)

Mệnh đề xuất hiện theo đúng thứ tự: SELECT → WHERE → GROUP BY → PIVOT → ORDER BY → LIMIT → OFFSET → LABEL → FORMAT → OPTIONS. Sai thứ tự = lỗi #VALUE!.

3. 15 Cú Pháp QUERY Nâng Cao 2026

3.1 SELECT * — Lấy Toàn Bộ Cột

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

Trả về toàn bộ vùng có sẵn header. Hữu ích để clone dữ liệu sang sheet phụ.

3.2 SELECT Cột Chọn Lọc + Đổi Thứ Tự

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

Hoán đổi thứ tự cột tự do — không cần Cut/Paste, không phá vỡ dữ liệu nguồn.

3.3 WHERE Lọc Theo Điều Kiện Số

=QUERY(A1:E1000, "SELECT A, B, D WHERE D > 5000000", 1)

Lọc các đơn hàng trên 5 triệu. Thay FILTER + SUMIFS bằng một công thức.

3.4 WHERE Với Chuỗi (CONTAINS, STARTS WITH, LIKE)

=QUERY(A1:E1000, "SELECT * WHERE B CONTAINS 'Hà Nội' OR B STARTS WITH 'HN'", 1)

Lọc khách hàng có địa chỉ chứa "Hà Nội" hoặc bắt đầu bằng mã "HN". Dùng LIKE 'HN%' cho pattern matching.

3.5 WHERE Lọc Theo Ngày

=QUERY(A1:E1000, "SELECT * WHERE A >= date '2026-01-01' AND A <= date '2026-06-30'", 1)

Luôn dùng format date 'YYYY-MM-DD'. Không dùng định dạng dd/mm/yyyy → lỗi parse.

3.6 GROUP BY + SUM/COUNT/AVG

=QUERY(A1:E1000, "SELECT B, SUM(D), COUNT(A), AVG(D) GROUP BY B ORDER BY SUM(D) DESC", 1)

Tổng doanh thu, số đơn, doanh thu trung bình theo từng khu vực — thay thế hoàn toàn Pivot Table cho báo cáo cơ bản.

3.7 PIVOT — Bảng Pivot Trong Một Dòng

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

Pivot doanh thu theo khu vực (hàng) × kênh bán (cột). Cực mạnh khi cần dashboard động không cần refresh pivot table.

3.8 LABEL + FORMAT — Đặt Tên Cột Tự Động

=QUERY(A1:E1000, "SELECT B, SUM(D) GROUP BY B LABEL B 'Khu vực', SUM(D) 'Doanh thu' FORMAT SUM(D) '#,##0₫'", 1)

Đặt label tiếng Việt và format tiền tệ ngay trong công thức.

3.9 ORDER BY Nhiều Cột

=QUERY(A1:E1000, "SELECT * ORDER BY D DESC, A ASC LIMIT 20", 1)

Top 20 đơn hàng theo doanh thu giảm dần, cùng giá trị thì sắp theo ngày tăng dần.

3.10 IS NULL / IS NOT NULL — Lọc Dữ Liệu Trống

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

Lọc các đơn chưa có ngày giao hàng — phát hiện dữ liệu thiếu nhanh chóng.

3.11 LIMIT + OFFSET — Phân Trang Dữ Liệu

=QUERY(A1:E10000, "SELECT * LIMIT 100 OFFSET 200", 1)

Lấy 100 dòng từ dòng 201 trở đi — dùng cho phân trang dashboard hoặc xử lý batch.

3.12 Kết Hợp IMPORTRANGE

=QUERY(IMPORTRANGE("URL_FILE", "Sheet1!A:E"), "SELECT Col2, SUM(Col4) WHERE Col1 >= date '2026-01-01' GROUP BY Col2", 1)

Kéo dữ liệu từ file khác và xử lý ngay. Lưu ý dùng Col1, Col2… thay vì A, B, C khi nguồn là IMPORTRANGE.

3.13 Gộp Nhiều Sheet Bằng Curly Braces

=QUERY({Sheet1!A2:E; Sheet2!A2:E; Sheet3!A2:E}, "SELECT Col2, SUM(Col4) GROUP BY Col2", 0)

Báo cáo tổng từ 3 chi nhánh trong một công thức — không cần SQL Server, không cần script.

3.14 Sử Dụng Cell Reference Trong Query

=QUERY(A1:E1000, "SELECT * WHERE B = '"&G1&"' AND D > "&G2, 1)

Tạo dashboard tương tác — người dùng nhập điều kiện vào G1, G2 và bảng tự update.

3.15 Tính Toán Trực Tiếp Trong SELECT

=QUERY(A1:E1000, "SELECT A, B, D, D*0.1, D-D*0.1 LABEL D*0.1 'VAT', D-D*0.1 'Thực thu'", 1)

Tính VAT và doanh thu thực thu ngay trong công thức — không cần thêm cột phụ.

Tăng Tốc 10x Với Template QUERY SheetStore

40+ template báo cáo QUERY sẵn dùng cho bán hàng, kho, nhân sự — chỉ cần đổi range

Đăng Ký Demo Miễn Phí

4. Case Study: Dashboard Bán Hàng Bằng QUERY

Một chuỗi 5 cửa hàng bán lẻ dùng SheetStore cần dashboard hiển thị:

  1. Tổng doanh thu hôm nay theo từng cửa hàng
  2. Top 10 sản phẩm bán chạy nhất tuần
  3. So sánh tuần này vs tuần trước theo %
  4. Cảnh báo các SKU sắp hết hàng (tồn kho < 10)

Trước khi dùng QUERY: 47 công thức SUMIFS + COUNTIFS rải rác, mở file mất 30 giây vì lookup nặng.

Sau khi rewrite bằng QUERY: 4 công thức duy nhất, file load dưới 3 giây, code dễ bảo trì.

// Doanh thu hôm nay theo cửa hàng
=QUERY(Orders!A:F, "SELECT C, SUM(E) WHERE A = date '"&TEXT(TODAY(),"yyyy-MM-dd")&"' GROUP BY C LABEL SUM(E) 'Doanh thu'", 1)

// Top 10 SKU bán chạy 7 ngày
=QUERY(Orders!A:F, "SELECT D, SUM(F) WHERE A >= date '"&TEXT(TODAY()-7,"yyyy-MM-dd")&"' GROUP BY D ORDER BY SUM(F) DESC LIMIT 10", 1)

// Cảnh báo tồn kho thấp
=QUERY(Stock!A:D, "SELECT A, D WHERE D < 10 ORDER BY D ASC", 1)

Đọc thêm về xây dashboard chuyên sâu trong Hướng dẫn tạo dashboard Google Sheets 2026.

5. Lỗi Thường Gặp Và Cách Fix

Lỗi #VALUE! — Unable to parse query

Sai thứ tự mệnh đề (ORDER BY phải sau GROUP BY) hoặc sai dấu nháy đơn. Kiểm tra format date 'YYYY-MM-DD' phải đúng.

Lỗi NO_COLUMN — Không tìm thấy cột

Khi dùng IMPORTRANGE hoặc curly braces, phải dùng Col1, Col2… chứ không phải A, B.

Kết quả trả về thiếu header tiếng Việt

Dùng mệnh đề LABEL để gán tên tiếng Việt cho từng cột — header tự sinh sẽ là "sum D" rất xấu.

QUERY mix kiểu dữ liệu trả về trống

QUERY yêu cầu một cột phải đồng nhất kiểu dữ liệu. Nếu cột số bị xen text → ép kiểu bằng VALUE() hoặc dùng SELECT A, TO_TEXT(B).

6. Tối Ưu QUERY Cho Dữ Liệu Lớn

  • Lọc trước, gom sau: WHERE đặt sớm giúp giảm số dòng cần xử lý ở GROUP BY
  • Tránh QUERY lồng QUERY: Mỗi cấp lồng nhân thời gian xử lý — tách thành sheet trung gian sẽ nhanh hơn
  • IMPORTRANGE chỉ kéo cột cần: Đừng kéo nguyên A:Z khi chỉ cần A:D
  • Chuyển sang AppScript khi > 200K dòng: QUERY tải sẵn toàn bộ dữ liệu vào RAM, dữ liệu siêu lớn nên dùng AppScript hoặc BigQuery
  • Cache kết quả: Copy-Paste Special → Values Only cho báo cáo lịch sử không thay đổi

Để hiểu thêm về tự động hoá Google Sheets ở mức nâng cao, đọc Apps Script tự động hoá báo cáoARRAYFORMULA nâng cao.

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

Hàm QUERY trong Google Sheets dùng để làm gì?

QUERY là hàm mạnh nhất Google Sheets — kết hợp lọc, sắp xếp, gộp nhóm, tính tổng và pivot dữ liệu chỉ trong một công thức duy nhất. Cú pháp SQL-like cho phép thay thế hàng chục hàm FILTER, SUMIFS, SORT, IMPORTRANGE rời rạc.

QUERY khác gì FILTER và VLOOKUP?

FILTER chỉ lọc theo điều kiện, VLOOKUP chỉ tra cứu một giá trị. QUERY làm cả hai cộng thêm GROUP BY, ORDER BY, PIVOT, LABEL, JOIN cột tính toán. Một công thức QUERY 50 ký tự có thể thay thế 5-10 công thức FILTER + SUMIFS.

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

Với dưới 100.000 dòng QUERY xử lý dưới 1 giây. Trên mức này nên kết hợp IMPORTRANGE chỉ kéo cột cần thiết, dùng WHERE lọc trước, hoặc tách dữ liệu theo tháng/năm để giảm tải.

Có thể dùng QUERY để gộp dữ liệu nhiều sheet không?

Có — bọc nhiều range trong dấu ngoặc nhọn {Sheet1!A:D; Sheet2!A:D; Sheet3!A:D} làm tham số đầu của QUERY. Cách này tạo báo cáo tổng hợp từ nhiều file/sheet mà không cần copy-paste thủ công.

SheetStore có hỗ trợ template QUERY sẵn không?

Có — SheetStore cung cấp hơn 40 template báo cáo dùng QUERY nâng cao: dashboard doanh thu, phân tích sản phẩm, tồn kho, công nợ. Người dùng chỉ cần thay range, không cần viết công thức từ đầu.

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