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

google-sheets

Hàm FILTER trong Google Sheets: lọc nhiều điều kiện, tự cập nhật

31/10/2026· Điền Nguyễn AZ
Hàm FILTER trong Google Sheets: lọc nhiều điều kiện, tự cập nhật

Muốn lọc dữ liệu theo nhiều điều kiện trong Google Sheets, bạn viết mỗi điều kiện thành một đối số riêng của hàm FILTER: =FILTER(A2:G, F2:F="Hoa", G2:G="Vinh") lấy các đơn của nhân viên Hoa ở khu vực Vinh. Muốn "điều kiện này hoặc điều kiện kia" thì cộng hai điều kiện lại trong ngoặc: (F2:F="Hoa")+(F2:F="Minh").

Bài này đi từ cú pháp cơ bản đến các tình huống thực tế: lọc theo khoảng ngày, theo từ khóa, theo một danh sách mã, và dựng một trang báo cáo có ô chọn nhân viên, chọn ngày, tự lọc lại mỗi khi bạn đổi lựa chọn.

Dữ liệu mẫu dùng trong bài

Sheet DonHang, tiêu đề ở dòng 1, dữ liệu từ dòng 2 và nhân viên nhập thêm ở cuối mỗi ngày:

A B C D E F G
1 Ngày Khách hàng Sản phẩm Số lượng Thành tiền Nhân viên Khu vực
2 01/10/2026 Nguyễn Văn An Bút bi Thiên Long 20 100.000 Hoa Vinh
3 02/10/2026 Trần Thị Bình Vở 200 trang 10 150.000 Minh Hưng Nguyên
4 05/10/2026 Lê Văn Cường Bút bi Thiên Long 50 250.000 Hoa Đô Lương
5 12/10/2026 Phạm Thị Dung Giấy A4 5 400.000 Minh Vinh

Cột A phải là ngày thật (căn phải khi chưa định dạng), không phải chữ gõ tay. Kiểm tra nhanh: chọn một ô ngày, nếu thanh công thức hiện 01/10/2026 và các hàm như =MONTH(A2) ra số 10 là đúng.

Dấu phân cách: bài dùng dấu phẩy ,. Nếu bảng tính của bạn đặt vùng Việt Nam và báo lỗi phân tích công thức, thay bằng dấu chấm phẩy ; (xem trong File → Settings → Locale).

Cú pháp hàm FILTER

=FILTER(range, condition1, [condition2, ...])
  • range: vùng dữ liệu cần lọc, ví dụ A2:G.
  • condition1: một cột (hoặc một hàng) gồm các giá trị TRUE/FALSE, cùng số dòng với range. Dòng nào TRUE thì được giữ lại.
  • condition2, ...: các điều kiện thêm. Một dòng chỉ được giữ khi thỏa tất cả điều kiện (logic AND).

Kết quả "tràn" ra các ô bên dưới và bên phải ô chứa công thức, tự cập nhật khi dữ liệu gốc thay đổi. FILTER không trả về dòng tiêu đề, nên bạn gõ (hoặc copy) dòng tiêu đề ngay phía trên ô công thức.

Ví dụ 1: lọc theo một điều kiện

Đặt công thức ở sheet mới BaoCao, ô A2 (dòng 1 là tiêu đề copy từ DonHang):

=FILTER(DonHang!A2:G, DonHang!F2:F="Hoa")

Kết quả là toàn bộ đơn của Hoa. Vì dùng vùng mở A2:G (không ghi số dòng cuối), đơn nhập ở dòng 800 vẫn được lọc.

Lưu ý: phép so sánh = trong Google Sheets không phân biệt hoa thường, nên "hoa" và "Hoa" cho cùng kết quả. Nhưng khoảng trắng thừa thì có ảnh hưởng: "Hoa " (có dấu cách cuối) sẽ không khớp.

Ví dụ 2: nhiều điều kiện cùng lúc (AND)

Đơn của Hoa, ở Vinh, và thành tiền từ 200.000 trở lên:

=FILTER(DonHang!A2:G, DonHang!F2:F="Hoa", DonHang!G2:G="Vinh", DonHang!E2:E>=200000)

Mỗi điều kiện là một đối số, cách nhau bằng dấu phẩy. Bạn cũng có thể viết dạng nhân (F2:F="Hoa")*(G2:G="Vinh") cho kết quả giống hệt, nhưng tách đối số dễ đọc và dễ sửa hơn.

Ví dụ 3: điều kiện "hoặc" (OR)

Đơn của Hoa hoặc Minh:

=FILTER(DonHang!A2:G, (DonHang!F2:F="Hoa")+(DonHang!F2:F="Minh"))

Vì sao dùng dấu cộng? Mỗi biểu thức trong ngoặc trả về TRUE (=1) hoặc FALSE (=0). Cộng lại, dòng nào thỏa ít nhất một điều kiện sẽ ra số lớn hơn 0, và FILTER coi số khác 0 là "giữ lại".

Không dùng được hàm OR() ở đây. OR(F2:F="Hoa", F2:F="Minh") gộp cả cột thành một giá trị TRUE/FALSE duy nhất, nên FILTER báo lỗi kích thước. Đây là lỗi rất nhiều người gặp lần đầu.

Kết hợp AND và OR: đơn của Hoa hoặc Minh, chỉ ở khu vực Vinh:

=FILTER(DonHang!A2:G, (DonHang!F2:F="Hoa")+(DonHang!F2:F="Minh"), DonHang!G2:G="Vinh")

Ví dụ 4: lọc theo khoảng ngày, theo tháng

Đơn trong tháng 10/2026:

=FILTER(DonHang!A2:G, DonHang!A2:A>=DATE(2026,10,1), DonHang!A2:A<DATE(2026,11,1))

Dùng DATE(năm, tháng, ngày) thay vì gõ "01/10/2026" trong ngoặc kép: chuỗi ngày gõ tay có thể bị hiểu là tháng/ngày tùy cài đặt vùng, còn DATE luôn đúng. Điều kiện thứ hai dùng < ngày đầu tháng sau để không sót các đơn ngày 31.

Bẫy hay gặp với hàm MONTH: nhiều người viết MONTH(DonHang!A2:A)=12 để lọc tháng 12. Nhưng ô trống được Sheets coi là số 0, tức ngày 30/12/1899, nên MONTH của ô trống ra 12. Kết quả là hàng trăm dòng trống chen vào báo cáo tháng 12. Nếu muốn dùng MONTH, luôn thêm điều kiện bỏ ô trống:

=FILTER(DonHang!A2:G, DonHang!A2:A<>"", MONTH(DonHang!A2:A)=12, YEAR(DonHang!A2:A)=2026)

Cách khoảng ngày bằng DATE ở trên không bị lỗi này vì ô trống (= 0) không bao giờ lớn hơn ngày 01/10/2026.

Ví dụ 5: lọc ô chứa từ khóa

Tìm mọi đơn có sản phẩm chứa chữ "bút", dù viết "Bút bi", "bút chì" hay "Hộp bút":

=FILTER(DonHang!A2:G, ISNUMBER(SEARCH("bút", DonHang!C2:C)))
  • SEARCH("bút", C2:C) trả về vị trí tìm thấy (một số), hoặc lỗi nếu không thấy. SEARCH không phân biệt hoa thường.
  • ISNUMBER(...) đổi kết quả thành TRUE/FALSE để FILTER dùng được.

Muốn tìm nhiều từ khóa cùng lúc ("bút" hoặc "vở"), dùng REGEXMATCH với dấu | nghĩa là "hoặc", thêm (?i) để không phân biệt hoa thường:

=FILTER(DonHang!A2:G, REGEXMATCH(DonHang!C2:C, "(?i)bút|vở"))

REGEXMATCH chỉ chạy trên chữ. Nếu cột có số (ví dụ mã sản phẩm toàn số), bọc thêm TO_TEXT(...) quanh vùng cột đó.

Ví dụ 6: lọc theo cả một danh sách (hoặc loại trừ danh sách)

Khi có 10 khách VIP cần theo dõi, viết 10 điều kiện cộng nhau rất dài. Hãy gõ danh sách khách VIP vào cột K2:K11 rồi dùng MATCH:

=FILTER(DonHang!A2:G, ISNUMBER(MATCH(DonHang!B2:B, K2:K11, 0)))

MATCH tìm từng tên khách trong danh sách VIP: thấy thì trả số thứ tự, không thấy thì lỗi #N/A. ISNUMBER biến kết quả thành TRUE/FALSE.

Ngược lại, lấy các đơn không thuộc danh sách (ví dụ loại các khách đã nghỉ hợp tác):

=FILTER(DonHang!A2:G, DonHang!A2:A<>"", ISNA(MATCH(DonHang!B2:B, K2:K11, 0)))

ISNA trả TRUE khi không tìm thấy. Điều kiện A2:A<>"" loại các dòng trống phía dưới, vì ô trống cũng "không có trong danh sách".

Thêm bớt tên trong cột K là kết quả đổi ngay, không phải sửa công thức. Đây là phần các bài hướng dẫn phổ thông thường bỏ qua nhưng dùng rất nhiều trong thực tế.

Ví dụ 7: chỉ lấy một vài cột

FILTER trả về tất cả các cột của range. Nếu báo cáo chỉ cần Ngày, Khách hàng, Thành tiền, có hai cách:

Cách 1 — CHOOSECOLS (gọn, dễ đọc):

=CHOOSECOLS(FILTER(DonHang!A2:G, DonHang!F2:F="Hoa"), 1, 2, 5)

Số 1, 2, 5 là thứ tự cột trong kết quả (A, B, E).

Cách 2 — lọc trên mảng ghép từ các cột cần lấy:

=FILTER({DonHang!A2:A, DonHang!B2:B, DonHang!E2:E}, DonHang!F2:F="Hoa")

Dấu ngoặc nhọn { , , } ghép các cột cạnh nhau thành một bảng mới (nếu bảng tính dùng dấu ; thì dấu phân cách cột trong ngoặc nhọn là \). Cách này cho phép đổi thứ tự cột tùy ý.

Muốn sắp xếp kết quả, bọc SORT bên ngoài, ví dụ thành tiền giảm dần: =SORT(FILTER(DonHang!A2:G, DonHang!F2:F="Hoa"), 5, FALSE). Chi tiết về SORT có trong bài hàm UNIQUE và SORT trong Google Sheets.

Phần nâng cao: trang báo cáo chọn nhân viên, chọn ngày

Đây là cách biến FILTER thành một "phần mềm tra cứu" nhỏ: quản lý chỉ cần chọn tên nhân viên và khoảng ngày, bảng tự lọc lại.

Bước 1 — Tạo vùng điều khiển ở sheet BaoCao:

A B
1 Nhân viên Tất cả
2 Từ ngày 01/10/2026
3 Đến ngày 31/10/2026
4 Tổng tiền (công thức ở bước 4)

Bước 2 — Thêm danh sách thả xuống cho ô B1: chọn B1 → Data → Data validation → Add rule → tiêu chí Dropdown, nhập các lựa chọn Tất cả, Hoa, Minh. Hướng dẫn chi tiết, kể cả cách lấy danh sách tự động từ dữ liệu, xem bài tạo dropdown list trong Google Sheets.

Bước 3 — Gõ dòng tiêu đề ở A6:G6, rồi công thức lọc ở A7:

=IFNA(FILTER(DonHang!A2:G,
  DonHang!A2:A<>"",
  (B1="Tất cả")+(DonHang!F2:F=B1),
  (B2="")+(DonHang!A2:A>=B2),
  (B3="")+(DonHang!A2:A<=B3)
), "Không có đơn phù hợp")

Giải thích từng dòng:

  • DonHang!A2:A<>"": bỏ dòng trống.
  • (B1="Tất cả")+(F2:F=B1): nếu B1 là "Tất cả" thì vế đầu luôn đúng, mọi dòng được giữ; nếu chọn "Hoa" thì chỉ dòng của Hoa thỏa vế sau. Đây là mẹo dùng "hoặc" để tắt một điều kiện.
  • (B2="")+(A2:A>=B2): để trống ô "Từ ngày" thì không giới hạn ngày bắt đầu. Tương tự với "Đến ngày".
  • IFNA(..., "Không có đơn phù hợp"): hiện thông báo thay cho lỗi #N/A khi không có dòng nào thỏa.

Bạn có thể xuống dòng trong công thức bằng Ctrl + Enter khi đang sửa ô để dễ đọc như trên.

Bước 4 — Tổng tiền theo đúng bộ lọc, ô B4:

=SUM(IFNA(FILTER(DonHang!E2:E,
  DonHang!A2:A<>"",
  (B1="Tất cả")+(DonHang!F2:F=B1),
  (B2="")+(DonHang!A2:A>=B2),
  (B3="")+(DonHang!A2:A<=B3)
), 0))

Cùng điều kiện, chỉ đổi vùng lọc thành cột Thành tiền và cộng lại. Như vậy số tổng luôn khớp với bảng đang hiển thị.

Trang này có thể chia sẻ cho quản lý với quyền xem. Nếu muốn mỗi nhân viên chỉ thấy đơn của mình, đừng chia sẻ cả file gốc, vì người có quyền xem vẫn mở được sheet DonHang; đọc thêm bài chia sẻ và phân quyền file Google Sheets.

FILTER, Filter view hay QUERY?

  • Bộ lọc trên thanh công cụ (Data → Create a filter / Filter views): chỉ ẩn dòng trên chính bảng gốc. Hợp để xem nhanh, không tạo bảng mới.
  • Hàm FILTER: tạo bảng kết quả riêng, tự cập nhật, dễ hiểu với người quen công thức Excel. Hợp cho trang báo cáo, danh sách gửi đi.
  • Hàm QUERY: mạnh hơn khi vừa lọc vừa cộng nhóm, đếm theo nhân viên, theo tháng. Xem bài hàm QUERY trong Google Sheets.

Lỗi thường gặp

#N/A – "No matches are found in FILTER evaluation". Nguyên nhân: không có dòng nào thỏa điều kiện, hoặc gõ sai giá trị so sánh (thừa dấu cách, sai chính tả). Cách sửa: kiểm tra lại giá trị, bọc IFNA(FILTER(...), "Không có dữ liệu").

Lỗi "FILTER has mismatched range sizes". Nguyên nhân: vùng dữ liệu và vùng điều kiện khác số dòng, ví dụ A2:G với F1:F hoặc A2:G100 với F2:F. Cách sửa: mọi vùng phải bắt đầu cùng dòng và cùng kiểu kết thúc (cùng mở, hoặc cùng dừng ở dòng 100).

Dùng OR() hoặc AND() bị lỗi hoặc ra kết quả sai. Nguyên nhân: hai hàm này gộp cả cột thành một giá trị. Cách sửa: dùng + cho "hoặc", tách đối số (hoặc *) cho "và".

#REF! – "Array result was not expanded because it would overwrite data". Nguyên nhân: vùng kết quả cần tràn ra đang có dữ liệu. Cách sửa: xóa các ô bên dưới, bên phải ô công thức, hoặc đặt công thức ở sheet trống.

Lọc tháng 12 ra cả dòng trống. Nguyên nhân: MONTH của ô trống bằng 12. Cách sửa: thêm A2:A<>"" hoặc lọc bằng khoảng ngày DATE.

Lọc theo ngày không ra gì dù có dữ liệu. Nguyên nhân: cột ngày đang là chữ (thường do dán từ phần mềm khác), căn trái. Cách sửa: chọn cột → Format → Number → Date; nếu vẫn là chữ dạng dd/mm/yyyy (đủ 2 chữ số ngày, tháng), tạo cột phụ với =DATE(RIGHT(A2,4), MID(A2,4,2), LEFT(A2,2)), kéo xuống, rồi copy và dán giá trị (Ctrl + Shift + V) đè lại cột A.

Muốn sửa tay một ô trong kết quả. Kết quả là mảng do công thức sinh ra, gõ đè sẽ làm công thức lỗi #REF!. Cần bản tĩnh thì copy vùng kết quả rồi Ctrl + Shift + V (dán giá trị) sang chỗ khác.

Công thức chuyển sang Excel bị khác. Excel 365/2021 cũng có FILTER nhưng cú pháp là FILTER(array, include, [if_empty]): nhiều điều kiện phải nhân * trong cùng đối số thứ hai, không tách đối số như Sheets. Xem bài hàm FILTER trong Excel.

Bảng tóm tắt công thức

Nhu cầu Công thức (rút gọn, bỏ tên sheet)
Một điều kiện =FILTER(A2:G, F2:F="Hoa")
Nhiều điều kiện (AND) =FILTER(A2:G, F2:F="Hoa", G2:G="Vinh")
Hoặc (OR) =FILTER(A2:G, (F2:F="Hoa")+(F2:F="Minh"))
Khoảng ngày =FILTER(A2:G, A2:A>=DATE(2026,10,1), A2:A<DATE(2026,11,1))
Chứa từ khóa =FILTER(A2:G, ISNUMBER(SEARCH("bút", C2:C)))
Nhiều từ khóa =FILTER(A2:G, REGEXMATCH(C2:C, "(?i)bút|vở"))
Thuộc danh sách =FILTER(A2:G, ISNUMBER(MATCH(B2:B, K2:K11, 0)))
Không thuộc danh sách =FILTER(A2:G, A2:A<>"", ISNA(MATCH(B2:B, K2:K11, 0)))
Chỉ lấy cột 1, 2, 5 =CHOOSECOLS(FILTER(A2:G, F2:F="Hoa"), 1, 2, 5)
Tắt điều kiện khi chọn "Tất cả" (B1="Tất cả")+(F2:F=B1)
Không có kết quả thì báo =IFNA(FILTER(...), "Không có dữ liệu")

Bài viết liên quan

Học Google Sheets thực chiến

FILTER kết hợp dropdown, SORT, QUERY là nền tảng để làm báo cáo bán hàng, chấm công, theo dõi học sinh tự cập nhật mà không phải lọc tay mỗi ngày. Khóa học Google Sheets tại Điền Nguyễn AZ thực hành trên chính dữ liệu công việc của học viên; học trực tiếp tại TP Vinh (Số 40 ngõ 207 đường Lê Lợi), Hưng Nguyên, Đô Lương, hoặc học online qua Zoom nếu bạn ở Hà Nội, TP.HCM hay tỉnh khác.

📞 Hotline / Zalo: 0362 465 361

👉 Xem chi tiết: Khóa học Google Sheets

#hàm filter google sheets#filter nhiều điều kiện#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.