Chào mọi người,
Mình vừa gặp một tình huống khá khó chịu với hàm SUBTOTAL trong Excel. Khi mình dùng SUBTOTAL để tính tổng một cột, nhưng trong cột đó lại có một vài ô chứa công thức trả về lỗi (ví dụ: #DIV/0!, #VALUE!), thì hàm SUBTOTAL lại trả về lỗi #CALC! thay vì bỏ qua các ô lỗi đó.
Theo mình tìm hiểu thì đây là một lỗi khá phổ biến khi dữ liệu đầu vào của SUBTOTAL có chứa các giá trị không phải là số hoặc là lỗi.
Nguyên nhân:
- Hàm
SUBTOTALmặc định sẽ tính toán trên tất cả các ô trong phạm vi được chọn, bao gồm cả các ô có công thức trả về lỗi. - Khi một ô trong phạm vi trả về lỗi, toàn bộ phép tính của
SUBTOTALsẽ bị ảnh hưởng và trả về lỗi#CALC!.
Cách khắc phục:
Để giải quyết vấn đề này, chúng ta có thể sử dụng một mảng phụ kết hợp với hàm IFERROR hoặc AGGREGATE.
1. Sử dụng IFERROR kết hợp mảng phụ:
Chúng ta có thể tạo một mảng phụ bằng cách dùng IFERROR để thay thế các lỗi bằng 0 (hoặc một giá trị khác tùy ý), sau đó mới dùng SUBTOTAL để tính tổng.
Ví dụ, nếu bạn muốn tính tổng cột B từ B2 đến B10 và có thể có lỗi, bạn có thể dùng công thức sau:
=SUBTOTAL(9, IF(ISERROR(B2:B10), 0, B2:B10))Lưu ý: Đây là công thức mảng, bạn cần nhập bằng tổ hợp phím Ctrl + Shift + Enter (trên các phiên bản Excel cũ) hoặc chỉ cần Enter (trên Excel có hỗ trợ mảng động).
2. Sử dụng hàm AGGREGATE (khuyến khích):
Hàm AGGREGATE mạnh mẽ hơn và có thể xử lý các lỗi một cách trực tiếp.
Cú pháp của AGGREGATE cho phép bạn chỉ định cách xử lý các lỗi:
=AGGREGATE(function_num, options, array, [k])Để thay thế SUBTOTAL(9, ...), bạn dùng:
=AGGREGATE(9, 5, B2:B10)Trong đó:
9là mã cho hàm SUM.5là tùy chọn để bỏ qua các giá trị lỗi.
Công thức này sẽ tự động bỏ qua các ô chứa lỗi trong phạm vi tính toán mà không cần dùng Ctrl+Shift+Enter.
Hy vọng chia sẻ này giúp ích cho các bạn khi gặp lỗi #CALC! với SUBTOTAL.