Chào các anh em trong diễn đàn Sheet & Excel,
Dạo gần đây mình có làm việc nhiều với các hàm mảng động (Dynamic Arrays) mới của Excel và gặp phải lỗi #SPILL! khá thường xuyên. Lỗi này xảy ra khi một mảng kết quả không thể tràn hết vào các ô trống liền kề. Sau một thời gian mày mò, mình đã tìm ra một vài cách để khắc phục hiệu quả, muốn chia sẻ lại cho mọi người tham khảo.
Nguyên nhân phổ biến của lỗi #SPILL!:
- Có dữ liệu hoặc định dạng trong các ô mà mảng kết quả muốn tràn vào.
- Vùng tràn bị giới hạn bởi các cột hoặc hàng khác.
- Các hàm khác đã sử dụng các ô đó.
- Trong một số trường hợp, đơn giản là do bảng tính quá lớn hoặc cấu trúc phức tạp.
Cách khắc phục:
- Kiểm tra vùng tràn: Đây là bước đầu tiên và quan trọng nhất. Hãy xóa hết dữ liệu hoặc định dạng thừa trong các ô mà mảng kết quả sẽ tràn vào. Đảm bảo các ô đó hoàn toàn trống.
- Sử dụng hàm
FILTERhoặcUNIQUEthay thế: Đôi khi, việc sử dụng các hàm này với tham số phù hợp có thể giúp bạn kiểm soát tốt hơn kích thước mảng trả về, tránh tràn không mong muốn. - Kiểm tra các hàm xung quanh: Xem xét liệu có hàm nào khác (ví dụ:
SUM,AVERAGE) đang tham chiếu đến vùng mà mảng động của bạn dự định tràn vào không. Nếu có, hãy điều chỉnh lại công thức hoặc di chuyển chúng. - Chia nhỏ mảng: Nếu mảng kết quả quá lớn, hãy thử chia nó thành các mảng nhỏ hơn bằng cách sử dụng các hàm như
INDEXhoặcOFFSETđể lấy từng phần. - Sử dụng
IFERRORđể xử lý: Trong trường hợp không thể tránh lỗi hoàn toàn, bạn có thể bọc công thức mảng động của mình trongIFERRORđể trả về một giá trị mặc định (ví dụ: 0 hoặc chuỗi trống) thay vì thông báo lỗi. Ví dụ:=IFERROR(HÀM_MẢNG_ĐỘNG, "").
Hy vọng những kinh nghiệm nhỏ này sẽ giúp ích cho các bạn khi làm việc với Dynamic Arrays. Nếu ai có thêm mẹo hay hoặc gặp tình huống khác, đừng ngần ngại chia sẻ nhé!