Chào mọi người, dạo này mình làm việc với file excel có nhiều dữ liệu, và thường xuyên phải dùng kết hợp hàm SUM và IF để tính toán theo điều kiện. Tuy nhiên, có một lỗi mình hay gặp phải là #VALUE! khi lồng 2 hàm này lại với nhau, đặc biệt là khi một trong các điều kiện trả về giá trị trống hoặc không phải là số.
Ví dụ, mình có công thức dạng:
=IF(A1="Xong",SUM(B1:B10),0)Nếu ô A1 có giá trị "Xong" nhưng vùng B1:B10 lại có ô trống hoặc text, công thức sẽ báo lỗi #VALUE!.
Sau một hồi tìm tòi, mình phát hiện ra cách khắc phục khá đơn giản. Thay vì dùng IF trực tiếp, mình có thể dùng hàm SUMPRODUCT hoặc một cách khác là ép kiểu dữ liệu trả về từ IF về dạng số.
Cách 1: Dùng SUMPRODUCT
Thay vì IF lồng SUM, ta có thể viết lại như sau:
=SUMPRODUCT((A1="Xong")*(B1:B10))Hàm SUMPRODUCT sẽ tự động bỏ qua các giá trị không phải số trong vùng B1:B10. Tuy nhiên, cách này chỉ phù hợp khi điều kiện chỉ có 1 (A1="Xong"). Nếu có nhiều điều kiện, ta cần lồng thêm các biểu thức tương tự.
Cách 2: Ép kiểu dữ liệu
Trong trường hợp vẫn muốn dùng IF, ta có thể ép kiểu dữ liệu trả về của phần 'else' về 0.
=IF(A1="Xong",SUM(IFERROR(B1:B10,"")),0)Hoặc một cách khác là ép kiểu cho SUM:
=SUM(IF(A1="Xong",B1:B10,0))Lưu ý: Công thức này là công thức mảng, bạn cần nhấn Ctrl + Shift + Enter để xác nhận.
Mình thấy cách thứ 2 này linh hoạt hơn và dễ áp dụng hơn khi có nhiều điều kiện lồng nhau. Mọi người có gặp trường hợp tương tự không? Có cách nào khác hiệu quả hơn không, chia sẻ cho mình với nhé!