QUERY Trong Google Sheets: Hướng Dẫn Toàn Diện Từ A-Z
Hàm QUERY trong Google Sheets — công cụ phân tích dữ liệu mạnh nhất, cho phép bạn truy vấn như SQL mà không cần biết lập trình.
Từ SELECT cơ bản đến GROUP BY, WHERE phức tạp, PIVOT và kết hợp với IMPORTRANGE — bài viết này là hướng dẫn toàn diện nhất tiếng Việt về hàm QUERY Google Sheets.
Mục lục bài viết:
1. Hàm QUERY Là Gì Và Tại Sao Cần Học?
QUERY là một trong những hàm độc đáo nhất của Google Sheets — cho phép bạn truy vấn dữ liệu trong spreadsheet bằng ngôn ngữ tương tự SQL (Google Visualization Query Language). Điều đặc biệt: bạn không cần biết lập trình hay SQL để sử dụng QUERY hiệu quả.
Với QUERY, bạn có thể:
- Lọc dữ liệu theo nhiều điều kiện phức tạp
- Tổng hợp (aggregate) — đếm, tính tổng, trung bình theo nhóm
- Sắp xếp và giới hạn số lượng kết quả
- Xoay (PIVOT) dữ liệu từ hàng thành cột
- Kết hợp với IMPORTRANGE để truy vấn dữ liệu từ nhiều file
So sánh: Nếu SUMIFS chỉ tính tổng theo điều kiện, QUERY làm được mọi thứ SUMIFS làm — cộng thêm GROUP BY, PIVOT, nhiều cột kết quả, và nhiều hơn nữa.
2. Cú Pháp Và Cấu Trúc Cơ Bản
=QUERY(data, query, [headers])
- data: Vùng dữ liệu nguồn (ví dụ: A1:F100, hoặc kết quả IMPORTRANGE)
- query: Chuỗi truy vấn (đặt trong dấu ngoặc kép)
- headers: Số hàng tiêu đề (thường là 1, bỏ qua nếu không có tiêu đề)
// Ví dụ đơn giản nhất — lấy toàn bộ dữ liệu
=QUERY(A1:F100, "SELECT *", 1)
// Chỉ lấy cột A và C
=QUERY(A1:F100, "SELECT A, C", 1)
Lưu ý về tên cột
Trong QUERY, cột được gọi theo chữ cái: A = cột đầu tiên, B = cột thứ hai... Không phụ thuộc vào tên tiêu đề. Nếu dữ liệu bắt đầu từ cột C, thì cột C = Col1.
3. Mệnh Đề SELECT — Chọn Cột Cần Hiển Thị
// Chọn nhiều cột
=QUERY(A1:E100, "SELECT A, B, E", 1)
// Đổi tên cột (label)
=QUERY(A1:E100, "SELECT A, B, E LABEL A 'Tên KH', B 'Mã SP', E 'Doanh Thu'", 1)
// Tính toán trong SELECT
=QUERY(A1:E100, "SELECT A, B*C, (B*C)*0.1 LABEL B*C 'Thành tiền', (B*C)*0.1 'VAT'", 1)
4. Mệnh Đề WHERE — Lọc Dữ Liệu
WHERE là mệnh đề bạn sẽ dùng nhiều nhất. Hỗ trợ các toán tử: =, !=, <, >, <=, >=, contains, starts with, ends with, matches, is null, is not null.
// Lọc theo giá trị cụ thể
=QUERY(A1:E100, "SELECT * WHERE B = 'Hà Nội'", 1)
// Lọc số
=QUERY(A1:E100, "SELECT * WHERE E > 1000000", 1)
// Nhiều điều kiện (AND / OR)
=QUERY(A1:E100, "SELECT * WHERE B = 'Hà Nội' AND E > 500000", 1)
=QUERY(A1:E100, "SELECT * WHERE B = 'HN' OR B = 'HCM'", 1)
// Lọc text chứa từ khóa
=QUERY(A1:E100, "SELECT * WHERE A contains 'điện thoại'", 1)
// Lọc theo ngày
=QUERY(A1:E100, "SELECT * WHERE C >= date '2026-01-01'", 1)
// Dùng giá trị từ ô khác trong WHERE
=QUERY(A1:E100, "SELECT * WHERE B = '"&G1&"'", 1)
Mẹo: Lọc động theo ô
Dùng ký tự & để nối chuỗi với giá trị ô: "SELECT * WHERE B = '"&G1&"'" — khi thay đổi giá trị ở G1, kết quả QUERY tự động cập nhật. Rất hữu ích cho dashboard có bộ lọc.
5. GROUP BY Và Hàm Tổng Hợp
GROUP BY nhóm dữ liệu và tính toán tổng hợp — tương đương Pivot Table nhưng bằng công thức:
// Tổng doanh thu theo khu vực
=QUERY(A1:E100, "SELECT B, SUM(E) GROUP BY B", 1)
// Nhiều hàm tổng hợp cùng lúc
=QUERY(A1:E100, "SELECT B, COUNT(A), SUM(E), AVG(E), MAX(E), MIN(E) GROUP BY B", 1)
// Group theo 2 cột
=QUERY(A1:E100, "SELECT B, C, SUM(E) GROUP BY B, C", 1)
// Kết hợp WHERE + GROUP BY
=QUERY(A1:E100, "SELECT B, SUM(E) WHERE C = 'Điện thoại' GROUP BY B ORDER BY SUM(E) DESC", 1)
| Hàm tổng hợp | Ý nghĩa | Ví dụ |
|---|---|---|
| SUM(E) | Tổng cộng | Tổng doanh thu |
| COUNT(A) | Đếm số lượng | Số đơn hàng |
| AVG(E) | Trung bình | Giá trị đơn TB |
| MAX(E) | Giá trị lớn nhất | Đơn lớn nhất |
| MIN(E) | Giá trị nhỏ nhất | Đơn nhỏ nhất |
6. ORDER BY, LIMIT, OFFSET
// Sắp xếp tăng dần
=QUERY(A1:E100, "SELECT * ORDER BY E ASC", 1)
// Sắp xếp giảm dần — lấy Top 10
=QUERY(A1:E100, "SELECT * ORDER BY E DESC LIMIT 10", 1)
// Bỏ qua 10 dòng đầu (phân trang)
=QUERY(A1:E100, "SELECT * ORDER BY E DESC LIMIT 10 OFFSET 10", 1)
7. PIVOT — Xoay Dữ Liệu Từ Hàng Thành Cột
PIVOT biến các giá trị trong một cột thành tiêu đề cột — tương tự Pivot Table trong Excel nhưng tự động cập nhật:
// Doanh thu theo tháng cho từng khu vực
=QUERY(A1:E100,
"SELECT B, SUM(E)
WHERE A IS NOT NULL
GROUP BY B
PIVOT C",
1)
Kết quả: mỗi giá trị trong cột C (ví dụ: Tháng 1, Tháng 2...) trở thành một cột riêng — tạo bảng crosstab hoàn hảo cho báo cáo.
8. Kết Hợp QUERY Với IMPORTRANGE
Đây là combo mạnh nhất — truy vấn dữ liệu từ file Google Sheets khác mà không cần copy:
=QUERY(
IMPORTRANGE("https://docs.google.com/spreadsheets/d/FILE_ID", "DonHang!A:F"),
"SELECT Col2, SUM(Col6) WHERE Col3 = 'Hoàn thành' GROUP BY Col2 ORDER BY SUM(Col6) DESC",
1
)
Lưu ý quan trọng
Khi dùng IMPORTRANGE làm nguồn dữ liệu cho QUERY, cột phải gọi là Col1, Col2, Col3... (không phải A, B, C) vì IMPORTRANGE trả về mảng không có tên cột chữ cái.
9. Case Study Thực Tế
Case 1: Dashboard Báo Cáo Bán Hàng
// Sheet "BaoCao" — kéo từ sheet "DonHang" trong cùng file
=QUERY(DonHang!A:G,
"SELECT D, COUNT(A), SUM(F), SUM(F)/COUNT(A)
WHERE B >= date '2026-01-01' AND E = 'Hoàn thành'
GROUP BY D
ORDER BY SUM(F) DESC
LABEL D 'Nhân Viên', COUNT(A) 'Số Đơn', SUM(F) 'Doanh Thu', SUM(F)/COUNT(A) 'Giá Trị TB'",
1)
Case 2: Báo Cáo Tồn Kho Động
// Lọc sản phẩm tồn kho dưới mức tối thiểu
=QUERY(TonKho!A:E,
"SELECT A, B, C, D, E
WHERE C - D < E
ORDER BY C - D ASC
LABEL A 'Mã SP', B 'Tên SP', C 'Nhập', D 'Xuất', E 'Tồn Min'",
1)
Template Quản Lý Bán Hàng Google Sheets
Tại SheetStore.vn, chúng tôi có các template sẵn sàng với hàm QUERY đã được cấu hình để báo cáo tự động — không cần tự xây dựng từ đầu.
Xem Template Ngay →10. FAQ — Câu Hỏi Thường Gặp
QUERY có miễn phí không?
Có — QUERY là hàm tích hợp sẵn, hoàn toàn miễn phí trong mọi tài khoản Google.
QUERY có nhanh hơn SUMIFS không?
QUERY thường nhanh hơn khi GROUP BY nhiều cột và tính nhiều chỉ số cùng lúc. SUMIFS nhanh hơn cho phép tính đơn giản một ô.
Tại sao QUERY báo lỗi #VALUE?
Nguyên nhân phổ biến: (1) Cột hỗn hợp text+số, (2) Dùng A,B thay vì Col1,Col2 với IMPORTRANGE, (3) Sai cú pháp khi lọc ngày tháng.
Bài Tiếp Theo: Tạo Dashboard Google Sheets
Đã biết QUERY, hãy áp dụng để xây dựng Dashboard báo cáo chuyên nghiệp với biểu đồ và KPI tự động cập nhật.
Đọc bài: Tạo Dashboard Google Sheets →Chia sẻ bài viết:
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.