Hàm FILTER, UNIQUE, SORT trong Excel và Google Sheets

Hướng dẫn hàm mảng động FILTER, UNIQUE, SORT, SORTBY trên Excel 365 và Google Sheets: lọc theo điều kiện, lấy danh sách không trùng, sắp xếp và sửa lỗi #SPILL!.

Từ Excel 365 và Excel 2021, chỉ một công thức gõ ở một ô có thể trả về cả bảng kết quả, tự “tràn” (spill) xuống các ô bên dưới. Bốn hàm đáng học nhất là FILTER (lọc theo điều kiện), UNIQUE (lấy danh sách không trùng), SORT và SORTBY (sắp xếp). Khác với bộ lọc thủ công, kết quả tự cập nhật khi dữ liệu gốc thay đổi. Google Sheets cũng có các hàm này, chỉ khác vài chi tiết.

Phiên bảnExcel 2019 trở về trước không có các hàm này (báo #NAME?). Ví dụ dùng dấu phẩy; máy đặt vùng Việt Nam có thể cần dấu chấm phẩy.

1. FILTER — lọc dữ liệu bằng công thức

=FILTER(vùng_dữ_liệu, điều_kiện, [giá_trị_nếu_rỗng])
Đối sốÝ nghĩa
vùng_dữ_liệuBảng cần lấy ra, ví dụ A2:E500
điều_kiệnPhép so sánh trên một cột, cùng số dòng, ví dụ C2:C500="Hà Nội"
giá_trị_nếu_rỗngNội dung hiện khi không có dòng nào thoả (nếu bỏ trống sẽ báo #CALC!)

Ví dụ bảng bán hàng A:E (Ngày, Nhân viên, Chi nhánh, Sản phẩm, Thành tiền):

=FILTER(A2:E500,C2:C500="Hà Nội","Không có dữ liệu")
=FILTER(A2:E500,(C2:C500="Hà Nội")*(E2:E500>=5000000))
=FILTER(A2:E500,(C2:C500="Hà Nội")+(C2:C500="Đà Nẵng"))

Nhân * nghĩa là “và”, cộng + nghĩa là “hoặc”. Thay "Hà Nội" bằng ô chứa điều kiện (ví dụ H1) để làm báo cáo đổi nhanh.

2. UNIQUE — danh sách không trùng

=UNIQUE(vùng, [theo_cột], [chỉ_xuất_hiện_một_lần])
  • =UNIQUE(B2:B500): danh sách nhân viên, mỗi người một dòng.
  • =UNIQUE(B2:B500,FALSE,TRUE): chỉ những tên xuất hiện đúng một lần.
  • =COUNTA(UNIQUE(B2:B500)): đếm số khách hàng khác nhau.

Kết hợp với SUMIFS để làm bảng tổng hợp nhanh: cột G là =UNIQUE(B2:B500), cột H là =SUMIFS(E2:E500,B2:B500,G2#) — ký hiệu G2# nghĩa là “toàn bộ vùng tràn bắt đầu từ G2”.

3. SORT và SORTBY — sắp xếp bằng công thức

=SORT(vùng, [cột_sắp_xếp], [thứ_tự], [theo_cột])
=SORTBY(vùng, vùng_tiêu_chí_1, [thứ_tự_1], ...)

thứ_tự: 1 tăng dần, -1 giảm dần.

  • =SORT(A2:E500,5,-1): sắp theo cột thứ 5 (Thành tiền) giảm dần.
  • =SORTBY(A2:C60,C2:C60,-1,A2:A60,1): bảng điểm sắp theo điểm giảm dần, cùng điểm thì theo tên A→Z.
  • =SORT(UNIQUE(B2:B500)): danh sách nhân viên không trùng, theo ABC.
  • =TAKE(SORT(A2:E500,5,-1),5): top 5 đơn hàng lớn nhất (TAKE có trên Excel 365).

Lưu ý sắp xếp tên tiếng Việt theo “tên” chứ không theo “họ” cần tách tên trước — xem sắp xếp tên theo ABC.

4. Lỗi #SPILL! và cách sửa

Công thức mảng động cần một vùng trống đủ rộng để tràn kết quả. Khi bị chặn, Excel báo #SPILL!; bấm vào ô lỗi, Excel sẽ khoanh viền nét đứt vùng cần dùng.

Nguyên nhânCách sửa
Có dữ liệu, kể cả dấu cách, trong vùng trànXoá nội dung các ô đó
Vùng tràn có ô đã gộp (Merge)Bỏ gộp ô
Công thức nằm trong Excel Table (Ctrl+T)Đặt công thức ra ngoài Table
Kết quả vượt mép trang tính, hoặc tham chiếu cả cột A:A làm mảng quá lớnGiới hạn vùng, ví dụ A2:A5000

5. Khác biệt trên Google Sheets

  • FILTER: mỗi điều kiện là một đối số riêng (tự hiểu là “và”), không có đối số “nếu rỗng”: =FILTER(A2:E500,C2:C500="Hà Nội",E2:E500>=5000000). Bọc IFERROR để thay thông báo khi không có kết quả.
  • SORT: cú pháp =SORT(vùng, cột, TRUE/FALSE, ...) — TRUE là tăng dần. Sheets không có SORTBY, nhưng đối số cột của SORT có thể là một vùng bên ngoài, ví dụ =SORT(A2:A60,C2:C60,FALSE).
  • UNIQUE: dùng giống Excel.
  • Khi bị chặn, Sheets báo #REF! kèm thông báo kết quả mảng không mở rộng được vì sẽ ghi đè dữ liệu — xử lý như #SPILL!.
MẹoMuốn lọc, gom nhóm và tính tổng trong một công thức trên Google Sheets, hàm QUERY còn mạnh hơn — xem các hàm đặc trưng của Google Sheets.
Zalo