Chia sẻ
"Hướng dẫn cách xử lý lỗi trong công thức Excel bằng IFERROR, IFNA, ISERROR — bẫy lỗi, hiện giá trị thay thế, và viết công thức không bao giờ lỗi."
1. Tại sao công thức Excel hay bị lỗi?
Lỗi công thức là chuyện HÀNG NGÀY: VLOOKUP không tìm thấy → #N/A, chia cho 0 → #DIV/0!, tham chiếu sai → #REF!. Lỗi không chỉ xấu mà còn GÂY LỖI DÂY CHUYỀN — 1 ô lỗi → tất cả công thức tham chiếu đến nó cũng lỗi.
2. Tổng quan các loại lỗi
Lỗi | Nguyên nhân | Ví dụ |
|---|---|---|
#N/A | Không tìm thấy giá trị | VLOOKUP tìm tên không tồn tại |
#VALUE! | Kiểu dữ liệu sai | Cộng text + số |
#REF! | Tham chiếu bị xóa | Xóa cột mà công thức đang dùng |
#DIV/0! | Chia cho 0 | =A1/B1 khi B1=0 |
#NAME? | Excel không nhận tên | Gõ sai tên hàm |
#NUM! | Số quá lớn/nhỏ | IRR không hội tụ |
#NULL! | Giao cắt vùng rỗng | =A1:A5 B1:B5 (thiếu dấu phẩy) |
3. IFERROR — Bẫy mọi lỗi
3.1. Cú pháp
=IFERROR(value, value_if_error)Tham số | Ý nghĩa |
|---|---|
value | Công thức cần kiểm tra |
value_if_error | Giá trị trả về NẾU lỗi |
3.2. Ví dụ 1: VLOOKUP an toàn
=IFERROR(VLOOKUP(A2, Data!A:D, 4, 0), "Không tìm thấy")Nếu VLOOKUP lỗi #N/A → hiện "Không tìm thấy" thay vì lỗi đỏ.
3.3. Ví dụ 2: Chia an toàn
=IFERROR(A2/B2, 0)B2 = 0 → thay vì #DIV/0! → hiện 0.
3.4. Ví dụ 3: INDEX MATCH an toàn
=IFERROR(INDEX(C:C, MATCH(A2, B:B, 0)), "")4. IFNA — Chỉ bẫy lỗi #N/A
4.1. Cú pháp
=IFNA(value, value_if_na)4.2. Khác biệt IFERROR vs IFNA
Hàm | Bẫy lỗi |
|---|---|
IFERROR | TẤT CẢ lỗi (#N/A, #VALUE!, #REF!, #DIV/0!...) |
IFNA | CHỈ #N/A |
4.3. Khi nào dùng IFNA?
Khi bạn muốn bắt #N/A (lookup fail) nhưng vẫn muốn HIỆN các lỗi khác để debug:
=IFNA(VLOOKUP(A2, Data!A:D, 4, 0), "Chưa có dữ liệu")Nếu VLOOKUP trả #N/A → "Chưa có dữ liệu". Nhưng nếu gặp #REF! (sai cấu trúc) → VẪN hiện lỗi → bạn biết để sửa.
5. ISERROR và các hàm IS*
5.1. ISERROR
=ISERROR(A1) → TRUE nếu A1 chứa bất kỳ lỗi5.2. ISNA
=ISNA(A1) → TRUE nếu A1 = #N/A5.3. Kết hợp với IF
=IF(ISERROR(A2/B2), "Lỗi chia", A2/B2)Tương đương IFERROR nhưng dài hơn. Ưu tiên dùng IFERROR.
5.4. Các hàm IS* khác
Hàm | Kiểm tra |
|---|---|
ISNUMBER(A1) | A1 là số |
ISTEXT(A1) | A1 là text |
ISBLANK(A1) | A1 trống |
ISLOGICAL(A1) | A1 là TRUE/FALSE |
ISFORMULA(A1) | A1 chứa công thức |
ISEVEN/ISODD | Số chẵn/lẻ |
6. ERROR.TYPE — Phân loại lỗi
=ERROR.TYPE(A1)Kết quả | Lỗi |
|---|---|
1 | #NULL! |
2 | #DIV/0! |
3 | #VALUE! |
4 | #REF! |
5 | #NAME? |
6 | #NUM! |
7 | #N/A |
#N/A | Không phải lỗi |
6.1. Ứng dụng: Xử lý khác nhau cho từng lỗi
=IF(ISERROR(A2/B2),
SWITCH(ERROR.TYPE(A2/B2),
2, "Mẫu số bằng 0",
3, "Dữ liệu không hợp lệ",
"Lỗi khác"),
A2/B2)7. Patterns xử lý lỗi phổ biến
7.1. Pattern 1: Default value
=IFERROR(formula, default_value)7.2. Pattern 2: Trả chuỗi rỗng
=IFERROR(VLOOKUP(...), "")Ô hiện trống thay vì #N/A — đẹp cho báo cáo.
7.3. Pattern 3: Nested IFERROR (Cascade lookup)
=IFERROR(VLOOKUP(A2, Bang1, 2, 0),
IFERROR(VLOOKUP(A2, Bang2, 2, 0),
IFERROR(VLOOKUP(A2, Bang3, 2, 0),
"Không tìm thấy ở bất kỳ bảng nào")))Tìm ở Bảng 1 → không có → Bảng 2 → không có → Bảng 3 → vẫn không → thông báo.
7.4. Pattern 4: Giữ lỗi nhưng format
=IF(ISNA(VLOOKUP(A2,...)), "[MỚI]", VLOOKUP(A2,...))Dùng ISNA thay IFERROR để phân biệt "không tìm thấy" vs lỗi thật.
8. AGGREGATE — Hàm tính toán bỏ qua lỗi
=AGGREGATE(function_num, options, array)AGGREGATE giống SUM/AVERAGE/MAX nhưng có thể BỎ QUA lỗi:
Options | Ý nghĩa |
|---|---|
6 | Bỏ qua error values |
7 | Bỏ qua hidden rows + errors |
=AGGREGATE(9, 6, A2:A100) → SUM bỏ qua ô lỗi
=AGGREGATE(4, 6, A2:A100) → MAX bỏ qua ô lỗi9. Mẹo xử lý lỗi
IFNA over IFERROR cho VLOOKUP: IFNA chỉ bắt #N/A, giữ lại lỗi thật để debug
Tránh lạm dụng IFERROR: Bọc hết mọi thứ bằng IFERROR → che giấu lỗi → khó tìm bug
Debug trước, wrap sau: Viết công thức → test → CUỐI CÙNG mới bọc IFERROR
TEXT value cho lỗi: Trả text mô tả thay vì 0 → người đọc biết ý nghĩa
AGGREGATE cho SUM/AVERAGE: Thay vì SUMPRODUCT+IFERROR → dùng AGGREGATE nhanh hơn
10. Tổng kết
Xử lý lỗi là kỹ năng CHUYÊN NGHIỆP — phân biệt file Excel nghiệp dư (đầy lỗi đỏ) và file Excel chuyên gia (sạch sẽ, thông báo rõ ràng). Ưu tiên IFNA cho lookup, IFERROR cho tính toán, và AGGREGATE cho thống kê trên dữ liệu có lỗi.
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
