
Hàm filter google sheet (tên hàm là FILTER) trả về những dòng thỏa điều kiện bạn đặt ra, và kết quả tự cập nhật khi dữ liệu gốc thay đổi. Cú pháp cơ bản là =FILTER(vùng_dữ_liệu, điều_kiện); muốn nhiều điều kiện thì nhân (VÀ) hoặc cộng (HOẶC) các điều kiện lại với nhau. Trong bài này tôi dùng một bảng đơn hàng minh hoạ để bạn lọc theo trạng thái, nhân viên, kho, tháng và biết cách tránh những lỗi người mới hay gặp.
Hàm FILTER Google Sheet dùng khi nào?
Dùng FILTER khi bạn cần một bảng kết quả riêng, tự cập nhật theo dữ liệu gốc, thay vì ẩn dòng trên chính bảng gốc. Đây là điểm khác lớn nhất so với bộ lọc thường (Data > Create a filter): bộ lọc thường chỉ ẩn dòng trên sheet đang xem, còn FILTER tạo ra một vùng kết quả mới nằm ở nơi bạn đặt công thức.
Giả sử một đơn vị phân phối nhỏ ghi đơn hàng vào trang Don_hang (dữ liệu dưới đây chỉ là ví dụ minh hoạ):
- Cột A: Ngay_dat
- Cột B: Ma_don
- Cột C: Khach_hang
- Cột D: Nhan_vien
- Cột E: Kho
- Cột F: Tong_tien
- Cột G: Trang_thai
Mỗi khi nhân viên thêm một dòng đơn mới, trang báo cáo dùng FILTER sẽ tự có thêm dòng đó nếu khớp điều kiện. Bạn không phải lọc lại bằng tay mỗi sáng. Ngược lại, nếu chỉ cần xem nhanh một lần rồi thôi, bộ lọc thường vẫn tiện hơn.
Cú pháp FILTER và ví dụ cơ bản
Cú pháp là =FILTER(vùng_dữ_liệu, điều_kiện_1, [điều_kiện_2, ...]), trong đó mỗi điều kiện là một cột (hoặc mảng) có số dòng bằng với vùng dữ liệu. Ví dụ lấy tất cả đơn đã giao:
=FILTER(A2:G, G2:G="Đã giao")
Đặt công thức này ở một trang báo cáo, ví dụ ô A3 của trang Bao_cao. Công thức đọc từ dòng 2 đến hết cột, nên dòng mới thêm vào cũng được tính.
Để đổi điều kiện nhanh, hãy gõ trạng thái vào ô J1 rồi tham chiếu tới nó:
=FILTER(A2:G, G2:G=J1)
Giờ chỉ cần đổi J1 từ "Đã giao" sang "Chờ giao" là bảng kết quả đổi theo. Bạn có thể gắn thêm dropdown (Data validation) cho J1 để người dùng không gõ sai.
Hai lưu ý ngay từ đầu:
- Kết quả "tràn" xuống dưới và sang phải, nên vùng bên dưới và bên phải ô công thức phải để trống.
- Tuỳ cài đặt ngôn ngữ và khu vực của file, dấu ngăn cách tham số có thể là dấu phẩy hoặc dấu chấm phẩy. Nếu Sheet báo lỗi cú pháp, hãy thử đổi dấu.
Filter Google Sheet nhiều điều kiện: VÀ, HOẶC, chứa chữ, theo danh sách
Để filter google sheet nhiều điều kiện kiểu VÀ, bạn liệt kê thêm điều kiện, cách nhau bằng dấu phẩy; kiểu HOẶC thì cộng các điều kiện lại. Dưới đây là bốn kiểu hay dùng nhất.
VÀ: thỏa tất cả điều kiện
Đơn của nhân viên Lan có tổng tiền trên 5 triệu:
=FILTER(A2:G, D2:D="Lan", F2:F>5000000)
Cách khác tương đương là nhân hai điều kiện: (D2:D="Lan")*(F2:F>5000000). Mỗi điều kiện trả về đúng/sai (tương ứng 1/0), nhân lại chỉ còn 1 khi cả hai đúng.
HOẶC: thỏa một trong các điều kiện
Đơn của Kho HN hoặc Kho HCM:
=FILTER(A2:G, (E2:E="Kho HN")+(E2:E="Kho HCM"))
Cộng lại, chỉ cần một vế đúng thì kết quả khác 0 và dòng được giữ.
Chứa một đoạn chữ
Tìm mọi khách hàng có chữ "Minh" trong tên:
=FILTER(A2:G, ISNUMBER(SEARCH("Minh", C2:C)))
SEARCH không phân biệt hoa thường. Nếu thích dùng biểu thức chính quy, có thể thay bằng REGEXMATCH(C2:C, "Minh").
Theo một danh sách cho sẵn
Khi cần lọc các khách nằm trong danh sách ở J2:J5:
=FILTER(A2:G, ISNUMBER(MATCH(C2:C, J2:J5, 0)))
Cách này gọn hơn nhiều so với việc cộng một chuỗi dài các điều kiện, và bạn chỉ cần sửa danh sách khi muốn đổi đối tượng lọc.

| Cần | Cách viết |
|---|---|
| VÀ | Thêm điều kiện cách nhau dấu phẩy, hoặc nhân * |
| HOẶC | Cộng + các điều kiện trong ngoặc |
| Chứa chữ | ISNUMBER(SEARCH(...)) hoặc REGEXMATCH |
| Theo danh sách | ISNUMBER(MATCH(..., 0)) |
Filter Google Sheet theo ngày: theo tháng, 7 ngày gần nhất, ô chọn tháng
Để filter google sheet theo ngày, bạn so sánh cột ngày với hàm DATE hoặc TODAY, và điều kiện phải là ngày thật chứ không phải chữ trông giống ngày. Lọc đơn tháng 9/2026:
=FILTER(A2:G, A2:A>=DATE(2026,9,1), A2:A<DATE(2026,10,1))
Cách viết "từ ngày đầu tháng này đến trước ngày đầu tháng sau" an toàn hơn việc ghi ngày cuối tháng, vì không phải nhớ tháng có 30 hay 31 ngày và không bỏ sót đơn có kèm giờ.
Lọc 7 ngày gần nhất tính đến hôm nay:
=FILTER(A2:G, A2:A>=TODAY()-7)
Muốn người dùng tự chọn tháng, hãy nhập ngày đầu tháng vào ô J1 (ví dụ 1/9/2026) rồi dùng:
=FILTER(A2:G, A2:A>=J1, A2:A<EDATE(J1,1))
EDATE(J1,1) cho ra ngày đầu của tháng kế tiếp.
Cột ngày đang lưu dạng chữ thì sao?
Nếu ngày bị căn lề trái và so sánh không ra kết quả, nhiều khả năng ngày đang là chữ (thường gặp khi dán từ phần mềm khác hoặc file xuất ra). Có thể ép về ngày bằng DATEVALUE:
=FILTER(A2:G, ARRAYFORMULA(IFERROR(DATEVALUE(A2:A),0))>=DATE(2026,9,1))
IFERROR(..., 0) giúp các dòng trống không làm hỏng phép so sánh. DATEVALUE phụ thuộc định dạng ngày theo khu vực của file, nên hãy thử trên vài dòng trước khi áp dụng cho cả bảng. Về lâu dài, nên sửa cột gốc thành ngày thật.
Kết hợp FILTER với SORT, SUM, CHOOSECOLS
FILTER hay được lồng trong hàm khác để sắp xếp, cộng tổng hoặc chỉ lấy vài cột. Ba mẫu sau dùng nhiều nhất trong báo cáo đơn hàng.
- Sắp xếp:
=SORT(FILTER(A2:G, G2:G="Đã giao"), 6, FALSE)lọc đơn đã giao rồi xếp theo cột thứ 6 của vùng lọc (Tong_tien) giảm dần. - Cộng tổng:
=SUM(FILTER(F2:F, D2:D="Lan"))ra tổng tiền các đơn của Lan. Nếu chỉ cần tổng theo một điều kiện đơn giản,SUMIFngắn hơn; xem thêm ở bài hàm trong Google Sheet hay dùng nhất. - Chọn cột:
=CHOOSECOLS(FILTER(A2:G, G2:G="Đã giao"), 2, 3, 6)chỉ giữ Ma_don, Khach_hang và Tong_tien.
Khi FILTER không có dòng nào khớp, SUM báo lỗi thay vì trả về 0. Bạn có thể bọc thêm IFERROR(..., 0) cho các ô tổng.

FILTER, QUERY hay bộ lọc có sẵn: chọn cái nào?
Không có cái nào thắng tuyệt đối: FILTER dễ đọc nhất cho lọc đơn giản, QUERY mạnh hơn khi cần gom nhóm, còn bộ lọc có sẵn tiện nhất cho xem nhanh. Bảng dưới so sánh ba cách:
| Tiêu chí | FILTER | QUERY | Bộ lọc có sẵn (Create a filter) |
|---|---|---|---|
| Độ dễ | Dễ, cú pháp ngắn | Khó hơn, phải học cú pháp giống câu lệnh truy vấn | Dễ nhất, bấm chuột |
| Lọc động (tự cập nhật) | Có | Có | Không tạo bảng mới, chỉ ẩn dòng |
| Gom nhóm, tính tổng | Hạn chế, phải lồng hàm khác | Mạnh (group by, sum…) | Không |
| Chia sẻ cho người khác xem | Mọi người thấy cùng một kết quả trên trang báo cáo | Tương tự FILTER | Bộ lọc thường ảnh hưởng người đang mở file; filter view cho mỗi người một góc nhìn riêng |
Nếu bạn cần gom doanh số theo nhân viên hoặc theo tháng, hãy xem hàm QUERY Google Sheet hoặc pivot table trong Google Sheet. Còn nếu dữ liệu nằm ở file khác, hàm IMPORTRANGE sẽ kéo về trước khi lọc.
Lỗi hay gặp khi dùng FILTER và cách xử lý
Hầu hết lỗi của FILTER đến từ năm nguyên nhân sau.
- Báo không tìm thấy kết quả khớp: không có dòng nào thỏa điều kiện. Bọc công thức:
=IFERROR(FILTER(A2:G, G2:G="Đã giao"), "Không có"). - #REF! do tràn đè dữ liệu: bên dưới hoặc bên phải ô công thức đã có chữ. Xoá các ô đó hoặc dời công thức sang vùng trống.
- Vùng dữ liệu và vùng điều kiện khác kích thước: ví dụ
A2:GvớiG2:G100. Hãy để cả hai cùng bắt đầu và kết thúc ở cùng dòng. - Khoảng trắng thừa trong chuỗi: "Đã giao " (có dấu cách cuối) không bằng "Đã giao". Dùng
TRIMđể làm sạch dữ liệu gốc, hoặc so sánh quaTRIM(G2:G)trong công thức. - Ngày dạng chữ: không so sánh được với
DATE; xử lý bằngDATEVALUEnhư phần trên.
Thông báo lỗi chính xác có thể khác nhau tuỳ ngôn ngữ giao diện. Mô tả đầy đủ của hàm có tại trang hướng dẫn chính thức của Google về FILTER.
Tóm tắt và bước tiếp theo
Hàm FILTER lọc động theo điều kiện bạn đặt: một điều kiện thì liệt kê, nhiều điều kiện thì nhân cho VÀ, cộng cho HOẶC. Với ngày, hãy dùng khoảng "từ ngày đầu tháng đến trước ngày đầu tháng sau" và chắc chắn cột ngày là ngày thật. Lồng thêm SORT, SUM, CHOOSECOLS để ra báo cáo gọn, và bọc IFERROR để bảng không bị lỗi khi chưa có dữ liệu.
Để tự thực hành, hãy tạo trang Bao_cao, nhập vài chục dòng đơn mẫu, thử lần lượt từng công thức ở trên rồi đổi giá trị ở ô J1. Nếu dữ liệu của bạn đang bị trùng lặp, bài lọc trùng Google Sheet là bước nên làm trước khi lọc.
Câu hỏi thường gặp
›Hàm FILTER khác bộ lọc thường ở đâu?
Bộ lọc thường chỉ ẩn các dòng không khớp ngay trên bảng gốc, còn FILTER tạo một vùng kết quả riêng bằng công thức. Vùng kết quả đó tự cập nhật khi dữ liệu gốc thêm, sửa hoặc xoá dòng, nên rất hợp cho trang báo cáo.
›Làm sao lọc FILTER theo tháng?
Dùng hai điều kiện: ngày lớn hơn hoặc bằng ngày đầu tháng và nhỏ hơn ngày đầu tháng sau, ví dụ =FILTER(A2:G, A2:A>=DATE(2026,9,1), A2:A<DATE(2026,10,1)). Muốn đổi tháng linh hoạt, nhập ngày đầu tháng vào một ô và dùng EDATE để lấy tháng kế tiếp.
›Vì sao FILTER báo không tìm thấy kết quả?
Thường là do không có dòng nào khớp điều kiện, hoặc dữ liệu có khoảng trắng thừa, hoặc ngày đang lưu dạng chữ nên so sánh sai. Kiểm tra lại dữ liệu gốc, làm sạch bằng TRIM và bọc công thức bằng IFERROR để hiện chữ như "Không có".
›Lọc FILTER sang file Google Sheet khác được không?
Được, nhưng FILTER không đọc trực tiếp file khác. Bạn dùng IMPORTRANGE để lấy dữ liệu về, rồi lồng vào FILTER hoặc QUERY; lần đầu cần cấp quyền truy cập giữa hai file.
Tác giả
Chuyên gia chuyển đổi số · Đại diện 5F Edu
Hơn 8 năm triển khai và tư vấn chuyển đổi số cho doanh nghiệp vừa và nhỏ: chuẩn hoá quy trình, xây phần mềm quản lý bằng AppSheet và web app, tự động hoá bằng N8N. Người làm kênh YouTube Nghiện AppSheet.



