Lỗi Gặp Phải
Bạn nhập một công thức như =UNIQUE(A2:A100) hoặc =FILTER(B2:B50, C2:C50="Active") và thay vì hiển thị kết quả, Excel lại báo:
#SPILL!
Ô neo sẽ xuất hiện viền đứt nét và biểu tượng cảnh báo. Di chuột vào đó và bạn sẽ thấy "Spill range isn't blank" — hoặc thông báo tương tự tùy theo nguyên nhân.
Nguyên Nhân
Các công thức mảng động — UNIQUE, FILTER, SORT, SEQUENCE, XLOOKUP trả về nhiều kết quả, và các hàm tương tự — tự động tràn kết quả ra các ô lân cận. Công thức nằm ở một ô duy nhất; kết quả sẽ mở rộng xuống dưới hoặc sang phải từ đó.
Có thứ gì đó đang cản đường. Đây là những nguyên nhân phổ biến:
- Một ô trong vùng tràn có chứa dữ liệu — kể cả một ký tự khoảng trắng đơn lẻ
- Một ô được merge nằm trong đường tràn
- Công thức nằm bên trong Excel Table (
ListObject) — Table chặn hoàn toàn chức năng tràn - Mảng kết quả quá lớn, vượt quá hàng 1.048.576 hoặc cột XFD
- Công thức tham chiếu đến một mảng động khác chưa xác định được kích thước (hiếm gặp, nhưng có xảy ra)
Cách Khắc Phục Từng Bước
Bước 1 — Xác định nguyên nhân cản trở
Nhấp vào ô hiển thị #SPILL!. Excel vẽ viền đứt nét màu xanh xung quanh vùng tràn dự kiến. Quan sát khu vực đó để tìm bất kỳ điểm bất thường nào.
Cách nhanh hơn: nhấp vào biểu tượng cảnh báo và chọn Select Obstructing Cells. Excel sẽ nhảy thẳng đến các ô gây lỗi và tô sáng chúng.
Bước 2 — Xóa dữ liệu đang cản trở
Tìm thấy dữ liệu lạ trong vùng tràn? Chọn các ô đó và nhấn Delete. Lỗi sẽ biến mất ngay lập tức và kết quả công thức sẽ được điền vào.
Hãy chú ý đến các ký tự khoảng trắng vô hình — chúng là "kẻ giết người thầm lặng" ở đây. Một ô trông có vẻ trống nhưng có thể chứa một dấu " " được nhập vô tình. Dùng Find & Replace (Ctrl+H): nhập khoảng trắng vào ô Find, để trống ô Replace, rồi chạy trên vùng nghi ngờ.
Bước 3 — Bỏ merge các ô đang chặn vùng tràn
Ô merge và mảng động không tương thích với nhau. Nếu một ô merge đang nằm trong đường tràn:
- Chọn (các) ô merge.
- Vào Home → Alignment → Merge & Center → Unmerge Cells.
- Định dạng lại hoặc di chuyển nội dung, sau đó kiểm tra xem công thức đã hoạt động chưa.
Bước 4 — Chuyển công thức ra ngoài Excel Table
Excel Table (Ctrl+T) đơn giản là không hỗ trợ tràn — kiến trúc của nó không cho phép điều đó. Nếu ô neo của công thức nằm trong Table, bạn có hai cách giải quyết:
- Cắt (Ctrl+X) và dán công thức vào bất kỳ ô nào nằm ngoài ranh giới Table.
- Hoặc chuyển toàn bộ Table thành vùng bình thường: nhấp chuột phải vào Table → Table → Convert to Range.
Dù theo cách nào, khi công thức nằm trên các ô bình thường, nó sẽ tràn mà không gặp vấn đề gì.
Bước 5 — Sửa lỗi tràn vượt giới hạn bảng tính
Một công thức như =SEQUENCE(2000) được nhập ở hàng 47.000 sẽ cố ghi đến hàng 49.000 — không vấn đề gì. Nhưng nếu nhập ở hàng 47.576, nó sẽ chạm giới hạn của bảng tính. Có hai lựa chọn:
- Di chuyển công thức lên cao hơn (hoặc sang trái hơn với công thức tràn theo cột).
- Giới hạn kết quả đầu ra bằng
INDEX:
-- Thay vì:
=SEQUENCE(2000)
-- Giới hạn 500 kết quả đầu tiên:
=INDEX(SEQUENCE(2000), SEQUENCE(500))
Bước 6 — Gỡ rối tham chiếu mảng động vòng tròn
Đôi khi hai công thức mảng động tham chiếu lẫn nhau, và không cái nào có thể xử lý trước. Điều này tạo ra vùng tràn không xác định được kích thước mà Excel không thể xử lý. Hãy phá vỡ sự phụ thuộc này bằng LET:
-- Có vấn đề: FILTER tham chiếu đến một công thức tràn khác
=FILTER(A2:A100, B2:B100=UNIQUE(C2:C100))
-- Khắc phục: tính toán trước bằng LET để kết quả bên trong ổn định
=LET(
uniqueCategories, UNIQUE(C2:C100),
FILTER(A2:A100, COUNTIF(uniqueCategories, B2:B100))
)
Cách Xác Nhận Đã Khắc Phục Thành Công
- Biểu tượng
#SPILL!đã biến mất và kết quả hiển thị đầy đủ ở các ô bên dưới hoặc bên phải. - Nhấp vào ô neo sẽ hiện viền màu xanh nhạt xung quanh vùng tràn — đây là biểu hiện bình thường và đúng như thiết kế.
- Nhấp vào bất kỳ ô nào trong vùng tràn (không phải ô neo) sẽ hiển thị công thức bị mờ trên thanh công thức. Bạn không thể chỉnh sửa trực tiếp, điều này xác nhận chức năng tràn đang hoạt động đúng.
- Thêm một hàng mới vào dữ liệu nguồn. Vùng tràn sẽ tự động mở rộng — không cần nhập lại công thức.
Ngăn Ngừa Lỗi #SPILL! Trước Khi Xảy Ra
- Dự trữ khoảng trống ngay từ đầu: Nếu
=FILTER()có thể trả về 200 hàng vào ngày bận rộn, hãy để trống 250 hàng bên dưới công thức. Một khoảng đệm nhỏ giúp tránh nhiều gián đoạn. - Dùng Table cho dữ liệu đầu vào, vùng bình thường cho đầu ra: Table rất phù hợp để nhập dữ liệu có cấu trúc. Với kết quả mảng động, hãy dùng vùng bình thường ở gần đó.
- Chú ý named range có ô merge: Một named range âm thầm bao gồm ô merge sẽ chặn vùng tràn ngay cả khi mọi thứ trông ổn về mặt trực quan.
- Bọc bằng
IFERRORcho file dùng chung: Nếu người khác sử dụng file của bạn, hãy ẩn các lỗi ngoại lệ một cách khéo léo:
=IFERROR(FILTER(A2:A100, B2:B100="Active"), "No results")
- Bỏ ẩn trước khi gỡ lỗi: Các hàng và cột ẩn vẫn chứa dữ liệu. Một ô ẩn có giá trị lạc trong đường tràn sẽ gây ra
#SPILL!y như một ô hiển thị bình thường.

