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! khi dùng SUMIFS với mảng động (Dynamic Arrays)

Khâu An Trúc 28/03/2026 23:16 559 lượt xem 3 trả lời

Chào các bạn trong diễn đàn,

Dạo gần đây mình hay gặp lỗi #SPILL! khi sử dụng hàm SUMIFS kết hợp với tính năng mảng động (Dynamic Arrays) trong Excel. Cụ thể là khi mình muốn tính tổng dựa trên nhiều điều kiện và mong đợi kết quả trả về một mảng các giá trị, nhưng Excel lại báo lỗi này.

Mình tìm hiểu thì thấy lỗi này thường xảy ra khi công thức trả về nhiều kết quả mà không có đủ chỗ trống để hiển thị. Tuy nhiên, với SUMIFS, mình thường chỉ mong đợi một giá trị duy nhất cho mỗi lần tính, nên mình khá băn khoăn về nguyên nhân.

Có bạn nào đã từng gặp tình huống tương tự và có cách khắc phục không ạ? Mình thử các cách sau nhưng chưa hiệu quả:

  • Kiểm tra các ô xung quanh xem có dữ liệu che lấp không.
  • Thử tách công thức ra thành nhiều phần nhỏ hơn để kiểm tra.

Liệu có phải do cách mình thiết lập các mảng điều kiện hoặc mảng tính tổng có gì đó chưa đúng không? Mình đang dùng Excel bản Microsoft 365.

Rất mong nhận được sự giúp đỡ từ các cao thủ Excel!

1

Chào bạn,

Lỗi #SPILL! với SUMIFS khi dùng mảng động đúng là hơi khó chịu thật. Bạn thử kiểm tra lại xem các vùng dữ liệu bạn dùng trong các điều kiện của SUMIFS có đúng là mảng động (ví dụ: bạn dùng một hàm khác trả về mảng cho một trong các điều kiện) hay không?

Thông thường, SUMIFS sẽ trả về một giá trị duy nhất nếu các đối số criteria_rangecriteria là cố định. Nếu bạn muốn SUMIFS trả về một mảng kết quả, có thể bạn cần điều chỉnh cách bạn thiết lập các điều kiện hoặc cân nhắc dùng các hàm khác như SUMPRODUCT hoặc một công thức mảng động kết hợp với các hàm khác.

Bạn có thể chia sẻ cụ thể hơn về công thức bạn đang dùng không? Như vậy mọi người sẽ dễ dàng gỡ rối hơn.

5

Chào bạn,

Lỗi #SPILL! với SUMIFS đúng là hơi "khó nhằn" khi kết hợp với mảng động thật. Như bạn đã tìm hiểu, lỗi này thường xảy ra khi công thức muốn "tràn" ra nhiều ô mà không có chỗ.

Với SUMIFS, nếu các điều kiện của bạn đều là các vùng cố định (không phải mảng động), thì nó sẽ trả về một giá trị duy nhất. Tuy nhiên, nếu một trong các điều kiện của bạn là một mảng động (ví dụ: bạn dùng một hàm khác trả về mảng cho criteria_range), thì SUMIFS có thể sẽ cố gắng trả về một mảng kết quả.

Bạn thử kiểm tra lại xem các đối số criteria_rangecriteria trong công thức SUMIFS của bạn có đang là mảng động không nhé. Nếu bạn thực sự muốn SUMIFS trả về một mảng kết quả, có thể bạn cần xem xét lại cách thiết lập điều kiện hoặc cân nhắc dùng các hàm khác như SUMPRODUCT hoặc một cách tiếp cận mảng động khác.

Nếu bạn có thể chia sẻ cụ thể công thức bạn đang dùng, mọi người sẽ dễ dàng đưa ra giải pháp chính xác hơn đó!

2

Chào bạn,

Vấn đề lỗi #SPILL! khi dùng SUMIFS với mảng động này mình cũng từng gặp. Đúng là SUMIFS thường trả về 1 giá trị, nhưng khi kết hợp với mảng động, nó có thể hiểu nhầm là bạn muốn tính toán cho từng phần tử của mảng đó.

Bạn thử kiểm tra xem các criteria_rangecriteria của bạn có đang là mảng động không? Nếu bạn muốn SUMIFS trả về một mảng kết quả, có thể bạn cần dùng cách khác.

Một mẹo nhỏ là thay vì dùng SUMIFS trực tiếp với mảng động, bạn có thể thử kết hợp với hàm BYROW hoặc MAP (nếu bạn dùng Microsoft 365) để áp dụng SUMIFS cho từng hàng/phần tử của mảng động. Hoặc như bạn kia gợi ý, SUMPRODUCT cũng là một lựa chọn thay thế rất hay cho trường hợp này đó.

Bạn chia sẻ công thức cụ thể xem sao, mình cùng xem có cách nào tối ưu hơn không.

2

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

Đăng nhập Đăng ký