Bỏ qua để đến nội dung chính
Điền NguyễnAZ

google-sheets

Hàm QUERY trong Google Sheets: lọc và tổng hợp dữ liệu mạnh mẽ (kèm ví dụ)

04/09/2026· Điền Nguyễn AZ
Hàm QUERY trong Google Sheets: lọc và tổng hợp dữ liệu mạnh mẽ (kèm ví dụ)

QUERY dùng để làm gì?

Với bảng dữ liệu vài chục dòng, bạn có thể lọc bằng Filter hoặc dùng vài hàm IF/SUMIF là đủ. Nhưng khi dữ liệu lên tới hàng nghìn dòng và cần vừa lọc theo điều kiện, vừa gộp nhóm, vừa sắp xếp, vừa chỉ lấy vài cột trong cùng một công thức, ghép nhiều hàm riêng lẻ lại với nhau sẽ rất cồng kềnh.

Hàm QUERY giải quyết việc này bằng một cú pháp gần giống câu lệnh SQL: bạn viết một "câu truy vấn" mô tả muốn lấy gì, lọc theo điều kiện nào, gộp nhóm ra sao — Google Sheets trả về đúng bảng kết quả đó, tự động cập nhật khi dữ liệu gốc thay đổi.

Ví dụ dữ liệu dùng xuyên suốt bài này, nằm ở vùng A1:D6 (dòng 1 là tiêu đề):

A B C D
1 Sản phẩm Khu vực Tháng Doanh thu
2 Bàn ghế Hà Nội 8 12000000
3 Tủ gỗ Hà Nội 8 8500000
4 Bàn ghế Vinh 8 15000000
5 Bàn ghế Vinh 9 9000000
6 Tủ gỗ Vinh 9 6000000

Cú pháp cơ bản

=QUERY(data, query, [headers])

Trong đó:

  • data: vùng dữ liệu nguồn, nên chọn cả dòng tiêu đề.
  • query: chuỗi câu lệnh truy vấn, đặt trong dấu ngoặc kép.
  • headers (tùy chọn): số dòng tiêu đề của data. Nếu bỏ trống, Sheets tự đoán — với dữ liệu có dòng đầu là chữ, cột sau là số, thường đoán đúng là 1, nhưng để chắc chắn nên khai báo rõ.

Lưu ý quan trọng: trong câu truy vấn, cột được gọi bằng đúng chữ cái cột trên trang tính (A, B, C, D...) chứ không phải theo số thứ tự trong vùng data đã chọn. Nếu vùng dữ liệu của bạn bắt đầu từ cột B thay vì A, trong query vẫn phải viết B, C... chứ không viết lại từ A.

Ví dụ 1: Chọn cột và sắp xếp — SELECT, ORDER BY

Lấy tên sản phẩm và doanh thu, sắp xếp doanh thu giảm dần:

=QUERY(A1:D6, "SELECT A, D ORDER BY D DESC", 1)

SELECT A, D nghĩa là chỉ lấy cột Sản phẩm và Doanh thu (bỏ qua Khu vực, Tháng). ORDER BY D DESC sắp xếp theo cột D giảm dần (ASC là tăng dần, mặc định nếu không ghi gì).

Ví dụ 2: Lọc điều kiện — WHERE

Chỉ lấy các dòng có khu vực là "Vinh":

=QUERY(A1:D6, "SELECT A, B, D WHERE B = 'Vinh'", 1)

Điều kiện văn bản trong WHERE phải đặt trong dấu nháy đơn ('Vinh'), khác với điều kiện của SUMIF/COUNTIF dùng dấu nháy kép. Có thể kết hợp nhiều điều kiện bằng AND/OR:

=QUERY(A1:D6, "SELECT A, B, D WHERE B = 'Vinh' AND D > 10000000", 1)

Muốn tìm gần đúng (chứa một đoạn ký tự) thay vì khớp chính xác, dùng CONTAINS:

=QUERY(A1:D6, "SELECT A, D WHERE A CONTAINS 'Bàn'", 1)

Ví dụ 3: Gộp nhóm và tính tổng — GROUP BY

Tính tổng doanh thu theo từng sản phẩm:

=QUERY(A1:D6, "SELECT A, SUM(D) GROUP BY A LABEL SUM(D) 'Tổng doanh thu'", 1)

Quy tắc bắt buộc: mọi cột trong SELECT mà không nằm trong hàm tổng hợp (SUM, COUNT, AVG, MAX, MIN...) đều phải xuất hiện trong GROUP BY, nếu không QUERY sẽ báo lỗi. LABEL dùng để đổi tên tiêu đề cột kết quả — mặc định QUERY sẽ để nguyên tên hàm (sum D) trông không tự nhiên nên gần như luôn cần dùng LABEL khi có hàm tổng hợp.

Ví dụ 4: Giới hạn số dòng kết quả — LIMIT

Lấy 3 dòng có doanh thu cao nhất:

=QUERY(A1:D6, "SELECT A, B, D ORDER BY D DESC LIMIT 3", 1)

LIMIT giới hạn số dòng trả về, thường dùng kèm ORDER BY để lấy "Top N" — ví dụ top 10 khách hàng, top 5 sản phẩm bán chạy.

Ví dụ 5: Xoay bảng dữ liệu — PIVOT

Tổng doanh thu theo Sản phẩm (dòng) và Khu vực (cột) trong cùng một bảng:

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

PIVOT chuyển các giá trị duy nhất của cột B (ở đây là "Hà Nội", "Vinh") thành các cột riêng trong kết quả — tương tự Pivot Table nhưng viết bằng một dòng công thức, tự cập nhật khi dữ liệu gốc thay đổi mà không cần bấm Refresh.

Bảng các mệnh đề thường dùng

Mệnh đề Chức năng
SELECT Chọn cột muốn hiển thị
WHERE Lọc dòng theo điều kiện
GROUP BY Gộp nhóm dữ liệu theo cột
PIVOT Xoay giá trị của một cột thành các cột mới
ORDER BY Sắp xếp kết quả (ASC/DESC)
LIMIT Giới hạn số dòng trả về
LABEL Đổi tên tiêu đề cột kết quả
FORMAT Định dạng lại kết quả (ví dụ ngày tháng, số)

Lỗi thường gặp

"Unable to parse query string" Lỗi cú pháp — thường do dùng sai loại dấu ngoặc (nháy đơn '...' cho văn bản trong WHERE, nháy kép "..." bao quanh toàn bộ câu query), thiếu dấu phẩy giữa các cột trong SELECT, hoặc gõ nhầm tên mệnh đề. Kiểm tra lại từng phần của câu query, đối chiếu với các ví dụ chuẩn ở trên.

"GROUP_BY: column X must appear in GROUP BY or aggregate function" Bạn đang SELECT một cột không nằm trong hàm tổng hợp mà cũng không có trong GROUP BY. Thêm cột đó vào GROUP BY, hoặc bỏ khỏi SELECT nếu không cần.

Kết quả trống dù chắc chắn có dữ liệu khớp Hay gặp khi so sánh chữ hoa/thường hoặc dư khoảng trắng trong dữ liệu gốc (ví dụ ô đang là "Vinh " có khoảng trắng cuối). Cũng có thể do nhầm cột: query dùng chữ cái cột trên trang tính (A, B, C...), không phải số thứ tự trong vùng đã chọn.

Tự nhiên đoán sai dòng tiêu đề Nếu bỏ trống tham số headers, QUERY tự đoán dựa vào kiểu dữ liệu dòng đầu. Với bảng có dòng tiêu đề là số hoặc dữ liệu không đồng nhất, nên luôn khai báo rõ số dòng tiêu đề (thường là 1) thay vì để QUERY tự đoán.

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

  • Lọc và tổng hợp báo cáo từ bảng dữ liệu lớn, nhiều điều kiện cùng lúc
  • Tạo bảng "Top N" (doanh thu cao nhất, số lượng bán chạy nhất...)
  • Gộp dữ liệu theo nhóm mà không muốn dựng Pivot Table riêng
  • Kết hợp với IMPORTRANGE để lọc sẵn dữ liệu lấy từ file khác trước khi hiển thị

Học Google Sheets thực chiến tại TP Vinh

QUERY là một trong những hàm mạnh nhất của Google Sheets nhưng cũng dễ nản nếu tự học một mình vì cú pháp khác hẳn các hàm quen thuộc. Nếu bạn muốn học Google Sheets bài bản, từ các hàm cơ bản đến xử lý dữ liệu nâng cao như QUERY, tham khảo khóa học Google Sheets tại Điền Nguyễn AZ.

📞 Hotline / Zalo: 0362 465 361

👉 Xem chi tiết: Khóa học Google Sheets thực tế tại TP Vinh

#hàm query google sheets#query trong google sheets#lọc dữ liệu google sheets#google sheets nâng cao

Tài liệu miễn phí

30 phím tắt Excel hay dùng nhất

Tổng hợp phím tắt giúp thao tác Excel nhanh hơn — điền thông tin để tải file PDF miễn phí về dùng ngay.