Chia sẻ
"Cách dùng nhóm hàm ISxxx để kiểm tra một ô đang chứa số, chữ, trống hay lỗi trước khi đưa vào công thức, tránh những phép tính âm thầm sai vì lẫn kiểu dữ liệu."
Một trong những nguồn lỗi âm thầm nhất trong Excel không phải công thức sai, mà là kiểu dữ liệu sai — một ô trông như chứa số nhưng thực chất là văn bản, một ô trống nhưng lại chứa công thức trả về chuỗi rỗng. Những trường hợp này không báo lỗi gì, chỉ âm thầm cho ra kết quả sai.
Nhóm hàm bắt đầu bằng IS — ISNUMBER, ISTEXT, ISBLANK, ISERROR và một vài hàm khác cùng họ — luôn trả về đúng một trong hai giá trị TRUE hoặc FALSE, dùng để kiểm tra chính xác một ô đang chứa loại dữ liệu gì, trước khi đưa vào công thức khác.
Công thức trong bài dùng dấu phẩy (,); đổi sang dấu chấm phẩy (;) nếu Excel của bạn cấu hình theo vùng miền khác.
Bộ dữ liệu dùng trong bài
Một cột dữ liệu hỗn hợp: số, văn bản, ô trống, và một công thức bị lỗi — mô phỏng đúng kiểu dữ liệu lộn xộn hay gặp khi nhập liệu thực tế hoặc xuất từ hệ thống khác sang.

ISNUMBER — ô này có phải là số không
=ISNUMBER(A2)Trả về TRUE nếu ô chứa giá trị số, FALSE cho mọi trường hợp khác.

Đây chính là công cụ chẩn đoán nhanh nhất cho lỗi "số lưu dạng văn bản" (xem thêm ở Xử Lý Lỗi Trong Excel: #N/A, #VALUE!, #REF!, #DIV/0!): một ô ghi 1024 nhưng thực chất được nhập dưới dạng văn bản sẽ khiến ISNUMBER trả về FALSE, dù mắt nhìn thấy toàn chữ số. Đây là cách xác nhận chắc chắn nhất, đáng tin hơn nhiều so với chỉ nhìn vị trí căn lề trái/phải của ô.
ISTEXT — ô này có phải là văn bản không
=ISTEXT(A2)Làm ngược lại ISNUMBER: trả về TRUE nếu ô chứa văn bản.

ISBLANK — ô này có thật sự trống không
=ISBLANK(A2)Trả về TRUE chỉ khi ô hoàn toàn không có gì. Đúng như đã nói ở bài COUNT, COUNTA và COUNTBLANK, một ô chứa công thức trả về chuỗi rỗng "" trông có vẻ trống nhưng ISBLANK sẽ trả về FALSE, vì về bản chất ô đó vẫn đang chứa một công thức, chỉ là công thức đó cho ra kết quả hiển thị trống.

ISERROR — ô này có đang báo lỗi không
=ISERROR(A2)Trả về TRUE nếu ô chứa bất kỳ loại lỗi nào — #N/A, #VALUE!, #REF!, #DIV/0!, và các loại lỗi khác đã liệt kê ở bài Xử Lý Lỗi Trong Excel: #N/A, #VALUE!, #REF!, #DIV/0!.

ISERROR bắt mọi loại lỗi, không phân biệt loại nào — đây là điểm khác với ISNA (chỉ bắt riêng lỗi #N/A), một hàm cùng họ nhưng hẹp hơn. Sự khác biệt này giống hệt logic đã nói ở bài IFNA so với IFERROR: bắt đúng loại lỗi mình đã lường trước bao giờ cũng an toàn hơn bắt tất cả một cách mù quáng.
Ứng dụng thực tế: kiểm tra trước khi tính, tránh lỗi lan truyền
Giá trị thực sự của nhóm hàm IS nằm ở việc kiểm tra trước khi tính, thay vì tính xong rồi mới xử lý lỗi. Bài toán cụ thể: chỉ cộng những ô thực sự là số trong cột dữ liệu hỗn hợp ở đầu bài, bỏ qua văn bản và ô trống.
Cách viết tưởng hợp lý nhưng thực chất sẽ báo lỗi:
=SUMPRODUCT(ISNUMBER(A2:A8) * A2:A8)ISNUMBER(A2:A8) cho ra một dãy TRUE/FALSE đúng như mong đợi. Nhưng phép nhân * A2:A8 lại nhân trực tiếp dãy TRUE/FALSE đó với chính vùng dữ liệu gốc — tới đúng ô nào đang chứa chữ, Excel phải nhân FALSE với một chuỗi văn bản, và đây là phép tính không hợp lệ. Kết quả: công thức trả về #VALUE!, dù ý tưởng ban đầu nghe có vẻ đúng.
Cách an toàn hơn, tách bạch rõ từng bước bằng một cột phụ:

Thêm một cột phụ dùng =IF(ISNUMBER(A2), A2, 0) cho từng dòng — nếu là số thì giữ nguyên, không phải số thì thay bằng 0 — rồi SUM cột phụ đó lại. Cách này tránh được lỗi kiểu dữ liệu vì mỗi dòng đã được kiểm tra và xử lý an toàn trước khi cộng, thay vì cố nhân thẳng vào một vùng dữ liệu còn lẫn văn bản.
So sánh với việc chỉ dựa vào IFERROR
Một thói quen phổ biến nhưng kém an toàn hơn: bọc mọi công thức bằng IFERROR để "cho chắc", thay vì kiểm tra kiểu dữ liệu từ trước bằng nhóm hàm IS. Cách làm này che giấu triệu chứng thay vì xử lý nguyên nhân — công thức vẫn chạy trên dữ liệu sai kiểu, chỉ là kết quả lỗi bị giấu đi bằng một giá trị thay thế, khiến việc phát hiện dữ liệu gốc có vấn đề trở nên khó hơn nhiều so với việc dùng ISNUMBER/ISTEXT để phát hiện đúng nguyên nhân ngay từ đầu.
Tổng kết
Nhóm hàm ISNUMBER, ISTEXT, ISBLANK, ISERROR đều trả về TRUE/FALSE, dùng để xác nhận chính xác kiểu dữ liệu của một ô trước khi đưa vào công thức khác — thay vì đoán qua vị trí căn lề hay chờ công thức báo lỗi rồi mới xử lý. Dùng nhóm hàm này để kiểm tra trước giúp phát hiện đúng nguyên nhân của lỗi dữ liệu, thay vì chỉ che giấu triệu chứng bằng IFERROR.
Đây là bài cuối trong cụm 5 bài về các hàm Excel cơ bản, dùng hàng ngày. Xem lại từ đầu: COUNT, COUNTA và COUNTBLANK, MAX, MIN, LARGE và SMALL, PROPER, UPPER và LOWER, LEN và REPT.
Mục lục
Muốn làm chủ Excel?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
ERROR.TYPE: trả về mã số cho biết chính xác loại lỗi nào đang xảy ra
ISERROR chỉ trả lời có/không có lỗi. ERROR.TYPE đi xa hơn: trả về một mã số riêng cho từng loại lỗi cụ thể, đủ để công thức phản ứng khác nhau tuỳ loại lỗi gặp phải.
TYPE: trả về mã số kiểu dữ liệu của một ô, kiểm tra nhanh không cần nhiều hàm IS
TYPE trả về một mã số duy nhất cho biết ô đang chứa kiểu dữ liệu gì — số, chữ, luận lý, lỗi, hay mảng — thay cho việc phải gọi lần lượt nhiều hàm ISNUMBER, ISTEXT để dò từng khả năng.
ISLOGICAL: phân biệt giá trị TRUE/FALSE thật với chuỗi chữ 'TRUE'
ISLOGICAL kiểm tra một ô có đang chứa giá trị luận lý TRUE/FALSE thật hay không — phân biệt với chuỗi chữ 'TRUE' trông giống hệt nhưng bản chất là văn bản, gây sai lệch khi đưa vào công thức khác.
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.