Menu

Khắc phục lỗi #VALUE! khi dùng SUM và IF lồng nhau

Tưởng Tấn Vinh 12/06/2026 02:01 587 lượt xem 3 trả lời

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é!

5

Chào bạn,

Lỗi #VALUE! khi dùng SUM kết hợp IF là khá phổ biến, nhất là khi vùng dữ liệu SUM có chứa ô trống hoặc text. Cách bạn đưa ra để xử lý bằng IFERROR hoặc SUMPRODUCT là hoàn toàn hợp lý.

Mình xin chia sẻ thêm một cách khác cũng khá hiệu quả, đó là sử dụng SUMIFS. Hàm này có thể xử lý nhiều điều kiện mà không gặp vấn đề với ô trống hay text trong vùng tính tổng. Thay vì công thức của bạn, có thể thử:

=SUMIFS(B1:B10, A1, "Xong")

Hoặc nếu bạn vẫn muốn dùng IF và SUM, thì việc kiểm tra từng ô trong vùng SUM có phải là số hay không trước khi cộng cũng là một giải pháp, tuy nhiên sẽ làm công thức phức tạp hơn.

Cảm ơn bạn đã chia sẻ kinh nghiệm xử lý lỗi này!

1

Chào bạn,

Lỗi #VALUE! với SUM và IF là vấn đề muôn thuở với dân Excel, đặc biệt khi dữ liệu không "sạch". Cách bạn xử lý bằng IFERROR hoặc SUMPRODUCT là rất hay, mình cũng hay áp dụng.

Mình xin góp thêm một chút: nếu bạn muốn dùng SUMIF mà vẫn đảm bảo không lỗi, có thể thêm một bước kiểm tra xem ô đó có phải là số không trước khi cộng. Ví dụ:

=IF(A1="Xong",SUM(IF(ISNUMBER(B1:B10),B1:B10)),0)

Nhớ là phải nhấn Ctrl + Shift + Enter để biến nó thành công thức mảng nhé. Cách này hơi dài dòng một chút nhưng cũng xử lý được triệt để.

Cảm ơn bạn đã mở chủ đề rất hữu ích này!

3

Chào bạn,

Lỗi #VALUE! khi kết hợp SUM và IF là vấn đề mình cũng hay gặp, đặc biệt là với dữ liệu "nhảy múa" từ nhiều nguồn khác nhau. Cách xử lý bằng IFERROR hoặc SUMPRODUCT bạn chia sẻ là rất thiết thực.

Mình cũng xin góp thêm một ý nhỏ, nếu bạn muốn giữ nguyên cấu trúc IFSUM, có thể thử ép kiểu dữ liệu trong vùng SUM về số trước khi tính toán. Ví dụ, thay vì SUM(B1:B10), bạn có thể dùng SUM(--(B1:B10)). Dấu -- sẽ chuyển các giá trị văn bản hoặc trống thành 0, còn số thì giữ nguyên, tránh được lỗi #VALUE!.

Cảm ơn bạn đã mở một chủ đề rất hay!

1

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

Đăng nhập Đăng ký