Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Gỡ rối lỗi #SPILL! với hàm FILTER và điều kiện phức tạp

Hồ Kiệt Ly 27/03/2026 03:34 557 lượt xem 1 trả lời

Chào mọi người, hôm nay mình muốn chia sẻ về một lỗi khá khó chịu mà mình hay gặp khi dùng hàm FILTER, đó là lỗi #SPILL!. Lỗi này thường xuất hiện khi công thức của mình trả về nhiều hơn một kết quả, nhưng lại không đủ chỗ trống để hiển thị tất cả. Đặc biệt, khi mình cố gắng kết hợp FILTER với nhiều điều kiện phức tạp, lỗi này càng dễ xảy ra.

Ví dụ, mình có một bảng dữ liệu bán hàng và muốn lọc ra những đơn hàng của một nhân viên cụ thể trong một khoảng thời gian nhất định, đồng thời chỉ lấy những sản phẩm có doanh thu trên 1 triệu. Công thức của mình có thể trông như thế này:

=FILTER(BangDuLieu, (BangDuLieu[NhanVien] = "Nguyễn Văn A") * (BangDuLieu[NgayDatHang] >= NgayBatDau) * (BangDuLieu[NgayDatHang]  1000000), "Không tìm thấy")

Khi gặp lỗi #SPILL!, điều đầu tiên mình kiểm tra là xem có bất kỳ ô nào bị chặn bởi dữ liệu khác trong phạm vi kết quả dự kiến không. Đôi khi chỉ cần xóa bớt dữ liệu lân cận là công thức chạy được.

Tuy nhiên, có những trường hợp nguyên nhân sâu xa hơn. Nếu bạn cần trả về nhiều cột từ hàm FILTER và các cột đó có độ dài khác nhau, hoặc có những ô trống xen kẽ, Excel có thể không phân bổ đủ không gian. Trong tình huống này, thay vì cố gắng ép FILTER trả về toàn bộ bảng, mình thường chia nhỏ yêu cầu:

  • Lọc ra các hàng thỏa mãn điều kiện trước.
  • Sau đó, sử dụng các hàm như INDEX hoặc các phép toán mảng khác để trích xuất từng cột cụ thể từ kết quả lọc.

Một cách khác là đảm bảo rằng phạm vi trả về của FILTER là nhất quán. Nếu bạn muốn trả về nhiều cột, hãy đảm bảo rằng bạn đang chọn đúng các cột từ bảng dữ liệu gốc. Ví dụ, thay vì BangDuLieu, bạn có thể chỉ định rõ các cột cần thiết: CHOOSECOLS(BangDuLieu, 1, 3, 5).

Các bạn đã từng gặp lỗi này với FILTER hoặc các hàm mảng động khác chưa? Có cách nào hay hơn để xử lý không, chia sẻ với mình nhé!

1

Chào bạn,

Mình cũng hay gặp lỗi #SPILL! này, đúng là nó hơi "khó chịu" thật. Về trường hợp của bạn, khi lọc theo nhiều điều kiện phức tạp như vậy, có thể có những dòng dữ liệu trùng lặp hoặc không có đủ "không gian" để hiển thị hết các kết quả.

Bạn thử kiểm tra xem vùng dữ liệu trả về có bị che khuất bởi các bảng khác, ô trống hay dữ liệu khác không nhé. Đôi khi chỉ cần dọn dẹp lại vùng trống phía dưới hoặc bên cạnh là được.

Một cách khác để tránh #SPILL! khi dùng FILTER với nhiều điều kiện là bạn có thể thử chia nhỏ các điều kiện ra hoặc sử dụng kết hợp với các hàm khác như IF để xử lý từng trường hợp cụ thể.

Chúc bạn xử lý thành công!

1

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký