Hướng dẫn

IFERROR hay IFNA: Chọn đúng để không che lỗi thật trong Sheets

Tuân HoangTuân Hoang
7 tháng 9, 2026
Cập nhật: 6 tháng 10, 2026
16 phút đọc
Ảnh minh họa bài viết: IFERROR hay IFNA: Chọn đúng để không che lỗi thật trong Sheets

Sai lầm khiến bảng báo cáo doanh thu của bạn "sạch" nhưng sai bản chất

Hãy hình dung một chủ chuỗi 3 cửa hàng thời trang làm bảng tổng hợp doanh thu toàn bằng hàm IFERROR. Nhìn đâu cũng thấy công thức gọn gàng, không một dòng báo lỗi đỏ chói. Đẹp. Sạch. Cho đến khi doanh thu một chi nhánh thấp bất thường: vài đơn hàng bị nhân viên nhập sai mã, VLOOKUP báo lỗi, IFERROR nuốt luôn lỗi và trả về 0. Bảng báo cáo vẫn "sạch" như tờ giấy trắng, còn tiền của những đơn đó thì không ai hay.

Đây chính là cái bẫy kinh điển khi người dùng Google Sheets hiểu sai bản chất hai hàm IFERROR và IFNA. Cả hai đều dùng để dọn dẹp lỗi hiển thị, nhưng nếu coi chúng là một và lạm dụng hàm nào cũng được, bạn sẽ vô tình che đi những sai sót nghiệm trọng trong dữ liệu nguồn. Để tôi chỉ cho bạn cách phân biệt và dùng đúng, từ đó giữ được cả sự "sạch sẽ" lẫn tính trung thực của báo cáo.

Bản chất khác nhau: Một hàm che mọi lỗi, một hàm chỉ lọc đúng một loại

Hãy tưởng tượng bạn đang chạy một chiếc ô tô. Bảng điều khiển (dashboard) hiện đèn lỗi động cơ. IFERROR giống như bạn dán băng keo đen lên toàn bộ bảng điều khiển — không thấy đèn nào sáng, xe vẫn chạy, nhưng lỡ dầu đang cạn hoặc phanh sắp hỏng thì bạn cũng mù tịt. IFNA tinh tế hơn: nó chỉ che đi đúng cái đèn báo "không tìm thấy giá trị" — kiểu như đèn báo nhiên liệu tạm thời không thấy dữ liệu từ cảm biến — còn những lỗi khác như chia cho 0, lỗi cú pháp, lỗi tham chiếu vòng thì vẫn hiện rõ mồn một để bạn xử lý.

Cụ thể trong Google Sheets:

  • IFERROR(giá_trị, giá_trị_thay_thế): Bắt tất cả các loại lỗi: #N/A, #DIV/0!, #VALUE!, #REF!, #NAME?, #NUM!, #NULL!. Xảy ra lỗi nào cũng "nuốt" hết và trả về kết quả thay thế bạn chỉ định.
  • IFNA(giá_trị, giá_trị_thay_thế): Chỉ bắt mỗi lỗi #N/A (không tìm thấy giá trị). Các lỗi khác đều hiển thị nguyên trạng.

Nghe qua thì có vẻ IFERROR tiện hơn vì "bắt tất". Nhưng chính sự tiện lợi đó tạo ra hệ lụy khôn lường. Khi bạn dùng VLOOKUP để tìm tên khách hàng từ một bảng phụ, nếu ngày hôm đó nhân viên quên nhập dữ liệu thì bạn muốn hiện "Chưa có" để biết mà xử lý. IFNA làm đúng việc đó. Còn IFERROR: nếu bảng phụ bị xóa hàng loạt, lỗi #REF! xuất hiện, IFERROR cũng tặng bạn chữ "Chưa có" — và bạn lại tiếp tục ngồi không biết rằng toàn bộ dữ liệu tham chiếu đã bay màu.

Bài toán doanh thu thực tế: Khi nào dùng VLOOKUP + IFNA để lộ đúng dữ liệu thiếu

Quay lại trường hợp anh Tuấn, sau khi rà soát, chúng tôi phát hiện lỗi nằm ở khâu nhập mã sản phẩm từ phiếu giao hàng vào Google Sheets. Nhân viên kho gõ mã "AO-TRANG-M" nhưng trong bảng giá gốc chỉ có "AO-TRANG-L", "AO-TRANG-XL". Khi đó VLOOKUP không tìm thấy giá trị và báo #N/A.

Nếu dùng công thức cũ của anh ấy là =IFERROR(VLOOKUP($A2, BangGia, 3, 0), 0) thì đơn hàng đó im lặng nhận giá 0. Doanh thu thực tế của cửa hàng là 15,8 triệu nhưng công thức cộng ra 3,8 triệu. Số âm 12 triệu kia chính là do một loạt đơn hàng bị gán giá 0, rồi trừ đi chi phí cố định.

Cách xử lý đúng: Tách bạch hai tình huống. Dùng IFNA để bắt lỗi "không thấy mã hàng" và gán giá trị mặc định như 0 — vì đơn giản là bạn muốn biết dòng nào chưa có giá để kiểm tra. Nhưng hãy thêm một cột phụ để đếm số lỗi #N/A đã xảy ra:

Ví dụ cột G để tính thành tiền: =D2 * IFNA(VLOOKUP($C2, BangGia, 2, 0), 0)

Cột H để gắn cờ: =IF(ISNA(VLOOKUP($C2, BangGia, 2, 0)), "Kiểm tra mã", "")

Với cách này, cột G vẫn ra số 0 gọn gàng cho tổng doanh thu không bị vỡ, nhưng cột H sẽ liệt kê rõ những dòng nào đang "mất giá". Cuối ngày, lọc cột H khác rỗng, nhân viên kho sẽ biết chính xác đâu là mã nhập sai. Bạn không cần soi từng dòng li ti, mà lỗi thật tự động lộ ra khi nào cần kiểm tra. Đây chính là lúc IFNA thể hiện đẳng cấp: nó cho phép báo cáo chạy trơn tru, nhưng vẫn tạo ra "còi báo động" riêng cho bạn. Nếu bạn đang xây dựng một hệ thống quản lý bán hàng trên Google Sheets với nhiều đầu mục SKU, ban đầu mã chuẩn chưa được đồng bộ hết, thì kiểu xử lý này giúp bạn giảm tải đáng kể việc dò tìm tay.

Những lỗi "thật" khác mà IFERROR đang che giấu mà bạn không hề hay biết

Không chỉ dừng ở lỗi sai mã, IFERROR còn che dấu những vấn đề nghiêm trọng hơn nhiều. Hãy thử với bài toán tính % hoa hồng cho nhân viên kinh doanh dựa trên chỉ tiêu. Công thức lấy doanh số thực tế chia cho chỉ tiêu. Nhân viên A có chỉ tiêu 50 triệu, doanh số 43 triệu → công thức chạy bình thường. Nhưng giữa tháng, trưởng phòng xóa nhầm ô chỉ tiêu của nhân viên B (đang chứa số 50 triệu) để thay bằng ghi chú "nghỉ không chỉ tiêu". Tế bào này giờ là text, phép chia trả về #VALUE!.

Nếu bạn dùng IFERROR bao quanh: =IFERROR(D2/C2, 0), nhân viên B sẽ nhận 0 đồng hoa hồng. Nhưng sự thật là nhân viên B đạt 87% chỉ tiêu trước khi bị xóa — cô ấy xứng đáng nhận 7, 8 triệu. Lỗi #VALUE! này không phải lỗi dữ liệu thiếu, nó là lỗi sai cấu trúc bảng tính. IFERROR biến nó thành con số 0 vô hại. Đến cuối tháng, nhân viên B khiếu nại, bạn mới lòi ra lỗi, phải ngồi tính lại từng công đoạn.

Trong trường hợp này, IFNA sẽ không cứu được vì #VALUE! không phải #N/A — công thức vẫn hiện lỗi đỏ. Nhưng chính vì thế bạn biết ngay có bất thường xảy ra ở vùng dữ liệu nào, kiểm tra và sửa chữa ngay trong ngày thay vì phát hiện sau 2 tuần. Cá nhân tôi luôn dạy các bạn nhân viên văn phòng làm báo cáo doanh thu tại Việt Nam rằng: lỗi đỏ trên Sheets không phải kẻ thù — nó là người canh gác trung thành. Cứ để nó hiện ra, dò tìm cho đến khi hết lỗi, rồi mới tính đến chuyện "làm đẹp" bằng hàm phủ lỗi.

Chia sẻ công thức, bảng giá, hoặc template dùng chung: IFNA là lựa chọn an toàn hơn

Một tình huống thực tế khác mà tôi nhận được rất nhiều câu hỏi từ khách hàng của nhân viên bán hàng nhập liệu qua mobile Sheets: Khi bạn tạo một file tổng hợp dùng chung cho cả đội ngũ 15 người, mỗi người tự nhập số liệu của mình, file có các query liên kết giữa các trang tính.

Giả sử bạn dùng IFERROR cho toàn bộ các công thức query tổng hợp. Một hôm, một nhân viên vô tình đổi tên sheet từ "Thang_3" thành "thang3" (không gạch dưới). Lỗi #REF! xuất hiện ở công thức tham chiếu. IFERROR lập tức trả về 0 cho cả cột doanh thu tháng 3. Cả team nhìn vào thấy con số 0, nghĩ rằng tháng đó "chưa có ai nhập liệu" nên bỏ qua. Đến ngày 28, sếp hỏi sao doanh thu quý 1 thấp bất thường, mọi người mới hốt hoảng đi tìm. Hai tuần số liệu của cả một chi nhánh gần như mất trắng khỏi báo cáo.

Còn nếu chỉ dùng IFNA — và để các lỗi #REF!, #VALUE! hiện nguyên trạng — thì ngay khi nhân viên đổi tên sheet, công thức sẽ hiện lỗi đỏ cho cả team thấy. Chỉ một người để ý sẽ báo ngay cho cả nhóm, sửa trong 10 phút. Lỗi nhỏ phơi bày, lỗi lớn không xảy ra.

Chưa kể với các template bán hàng có cấu trúc phức tạp, nếu bạn định thu thập dữ liệu từ Google Form đổ về rồi dùng công thức xử lý, bạn sẽ thấy dữ liệu form thường xuyên có ô trống do người điền bỏ qua. Những ô trống này tạo ra #N/A khi dùng VLOOKUP mà chẳng có nghĩa lý gì nghiêm trọng. IFNA sẽ dọn sạch các lỗi vô hại này — đúng ý đồ của bạn. Nhưng lỗi do công thức bị hỏng (khi bạn sửa cấu trúc, thêm dòng, xóa cột) thì IFERROR sẽ giấu biến đi. Hãy dùng IFNA ở đây, để mọi lỗi kỹ thuật thật sự đều phải lộ diện.

Mẹo phân quyết nhanh: Bạn cần che cái gì và CẦN BIẾT cái gì?

Để tôi tóm gọn giúp bạn bằng một bảng quyết định đơn giản, bạn chỉ cần trả lời hai câu hỏi. Câu thứ nhất: Lỗi này xảy ra chủ động hay bị động? Nếu bạn cố tình tìm kiếm một giá trị có thể chưa tồn tại trong danh sách (như dùng VLOOKUP để tìm mã sản phẩm, tên khách hàng, giá bán mới được thêm) — kỳ vọng có thể không có kết quả — thì đó là lỗi chủ động, dùng IFNA. Nếu lỗi phát sinh do công thức bị hỏng, do dữ liệu nguồn sai, do cấu trúc bảng bị phá vỡ — bạn không hề chủ đích tạo ra — thì đó là lỗi bị động, bạn phải thấy lỗi này, không được dùng IFERROR.

| Tình huống | Loại lỗi | Hàm phù hợp | |---|---|---| | VLOOKUP tìm mã hàng trong bảng giá (hàng chưa kê khai) | #N/A chủ động, muốn bỏ qua | IFNA | | Query nối dữ liệu từ sheet khác | #REF! do xóa sheet, đổi tên | Không dùng hàm che, để lộ ra sửa | | Chia doanh số / chỉ tiêu, có thể chia 0 | #DIV/0! chủ động khi chưa nhập chỉ tiêu | IFNA hoặc IFERROR (nếu bạn chắc chắn chỉ có lỗi chia 0) | | Import từ hệ thống khác (POS, CRM) có ô rỗng thường xuyên | #N/A chủ động do dữ liệu trống | IFNA | | Công thức tính % tăng trưởng so với tháng trước, tháng trước chưa có (bỏ trống) | #DIV/0! | IFERROR vì bản chất bạn cũng không cần phân biệt |

Nếu bạn làm báo cáo cho riêng mình xem, hãy thoải mái dùng IFERROR cho gọn mắt. Nhưng nếu báo cáo đó để gửi sếp, gửi đối tác, hoặc dùng chung cho team mà bạn không thể kiểm soát hành vi nhập liệu của từng người — hãy ưu tiên IFNA trong các phép tìm kiếm, và không che các lỗi kỹ thuật. Nguyên tắc của tôi là: báo cáo sạch đến 95% là đạt, 5% lỗi đỏ còn lại chính là camera giám sát cho bảng tính của bạn. Xóa hết camera đi thì mất trộm hồi nào không hay.

Xây dựng công thức chuẩn cho báo cáo bán hàng nhiều chi nhánh

Giả sử bạn đang phụ trách mảng kinh doanh cho một công ty phân phối sữa với 4 chi nhánh. Mỗi chi nhánh có một file Sheets riêng nhập doanh số hằng ngày. Bạn dùng một file tổng hợp IMPORT RANGE từ 4 file đó về. Khi một chi nhánh chưa kịp nhập số liệu ngày hôm đó, ô tương ứng trống. Bạn dùng VLOOKUP để lấy dữ liệu về và IFNA để trả về 0 cho ngày trống. Điều này hoàn toàn hợp lý: bạn biết chi nhánh nào chậm nhập, nhắc họ bổ sung vào cuối ngày.

Nhưng nếu bạn dùng IFERROR cho toàn bộ công thức này, và một nhân viên ở chi nhánh Đà Nẵng vô tình xóa cả sheet "DoanhSo" trong file nguồn của họ, thì IMPORT RANGE trả về #REF!. IFERROR ở file tổng sẽ âm thầm trả về 0 cho nguyên một ngày dữ liệu của chi nhánh Đà Nẵng. Bạn nhìn bảng tổng hợp thấy Đà Nẵng ngày hôm đó không bán được gì — thậm chí bạn đinh ninh là họ ế khách. Trong khi thực tế, nhân viên vừa dọn dẹp file, xóa nhầm trang tính chứa dữ liệu. Khoan hãy nói đến chuyện báo cáo sai cho sếp, mà chính bạn cũng bị đánh lừa hoàn toàn.

Quy tắc tôi áp dụng: Khi kết hợp nhiều nguồn dữ liệu (IMPORTRANGE, QUERY, dùng chung file như tài khoản Google dùng chung hay riêng), luôn luôn chỉ dùng IFNA cho các phép tìm kiếm giá trị. Đối với các phép tính số học trực tiếp, nếu lo lắng chia 0, hãy dùng IF chứ không cần IFERROR:

=IF(B2=0, 0, A2/B2) thay vì =IFERROR(A2/B2, 0)

Viết IF rõ ràng dài hơn vài ký tự, nhưng nó tuyên bố ý định: "Tôi muốn chia, và tôi biết có thể gặp ô trống — tôi chủ động xử lý." Còn IFERROR là "tôi không biết sẽ gặp lỗi gì, tôi che hết đã." Khi bạn đã xác định được tất cả các loại lỗi có thể xảy ra, hãy xử lý từng loại một. Đó là cách làm của người chuyên nghiệp.

Ví dụ kiểm tra nhanh để bạn tự tin chọn hàm

Gõ thử vào một ô trống: =1/0. Bạn sẽ thấy #DIV/0!. Rồi gõ vào ô khác: =VLOOKUP("ABC", {A1:B5}, 2, 0) trong khi A1:A5 không có chữ "ABC" → #N/A. Bây giờ bạn đã thấy hai lỗi này nhìn khác nhau. Nếu bạn chỉ muốn dọn sạch cả hai, hãy dùng hai hàm IFERROR tách riêng. Nhưng bạn — người đang đọc bài này — hiểu rồi đấy, #DIV/0! có khi là do chính bạn quên nhập chỉ tiêu ở cột B. Nếu bạn dùng IFERROR để trả về 0 cho cả hai lỗi, bạn sẽ không bao giờ biết mình quên nhập chỉ tiêu cho đến tận lúc in bảng lương. Khi đó lỗi nằm ở khâu khác, và hàm này đã tiếp tay cho sai sót đó.

Nếu bạn đã mệt mỏi với việc tự dựng những bảng tính như thế này từ con số 0, Phần Mềm Quản Lý Bán Hàng Bằng Google Sheets trên SheetStore làm nền, hoặc Template Báo Cáo Bán Hàng Hàng Tháng miễn phí, rồi áp dụng nguyên tắc xử lý lỗi ở trên khi tùy chỉnh.

Bảo vệ dữ liệu gốc — Việc quan trọng hơn việc chọn hàm rất nhiều

Có một cách "chữa cháy" tốt hơn là ngồi phân vân nên chọn hàm nào: hãy ngăn lỗi ngay từ nguồn bằng cách khóa các vùng dữ liệu quan trọng.

Khi bạn sử dụng chức năng Data Validation với tiêu chí "Reject input" (từ chối nhập liệu sai), bạn sẽ giảm đáng kể số lỗi #N/A và #VALUE! phát sinh từ việc nhập tay. Chẳng hạn, cột "mã sản phẩm" bạn giới hạn danh sách các mã hợp lệ từ bảng giá. Nếu nhân viên gõ một mã không tồn tại (như dạo trước nhân viên của anh Tuấn gõ "AO-TRANG-M" trong khi chỉ có "AO-TRANG-L" và "AO-TRANG-XL"), Google Sheets sẽ từ chối ngay lập tức và hiện thông báo đỏ. Họ phải sửa ngay trước khi dữ liệu được lưu. Số lỗi không phát sinh, bạn không cần dùng đến IFERROR hay IFNA nhiều.

Ngoài ra, hằng ngày bạn nên dành ra 5 phút để nhìn vào bảng dữ liệu nguồn trước khi nhìn vào bảng báo cáo. Nói thì nghe buồn cười, nhưng đa số người dùng Google Sheets chỉ nhìn vào con số cuối cùng và ít khi lăn xuống cuối trang tính để xem vùng nhập liệu thô trông ra sao. Bạn làm báo cáo cho công ty có 30 nhân viên kinh doanh, mỗi người nhập 20 dòng mỗi ngày — thì việc rà soát ngẫu nhiên 20-30 dòng nhập liệu xem có dòng nào trống, dòng nào sai định dạng sẽ giúp bạn bắt lỗi nhanh hơn nhiều so với bất kỳ hàm nào trong Google Sheets.

Rồi khi hệ thống của bạn ổn định dần, luồng nhập liệu đã được chuẩn hóa, bạn có thể xem xét chuyển dần sang các công cụ chuyên sâu hơn phù hợp với quy mô tăng trưởng. Bạn sẽ biết mình cần khi nào nên bắt đầu nghĩ đến việc thay thế Google Sheets bằng phần mềm chuyên dụng hoặc nâng cấp lên CRM chuyên nghiệp. Khi đó bạn sẽ hiểu rõ nhu cầu của mình tới đâu, chứ không phải "cứ mua app cho sang" rồi lại bỏ xó vì không có dữ liệu thật để đưa vào.

Còn bây giờ, nếu dữ liệu của bạn đang nằm trong Google Sheets, hãy tập thói quen: dùng IFNA cho mọi phép tìm kiếm và dò tìm, đừng dùng IFERROR trừ khi bạn đã suy nghĩ kỹ và liệt kê ra được tất cả lỗi có thể xảy ra tại đúng vị trí đó. Lỗi hiện trên bảng tính giống như cơn đau của cơ thể — khó chịu, nhưng là dấu hiệu cho bạn biết cần hành động. Che đi cơn đau bằng thuốc giảm đau (IFERROR) mà không tìm nguyên nhân, thì bệnh nặng hơn, tiền mất, công sức đổ sông đổ bể.

Câu hỏi thường gặp

IFERROR và IFNA khác nhau ở điểm cốt lõi nào?

IFERROR bắt tất cả loại lỗi như #N/A, #DIV/0!, #VALUE!. Còn IFNA chỉ xử lý riêng lỗi #N/A (không tìm thấy khi dùng VLOOKUP, XLOOKUP). Nếu công thức lỗi số học hay sai kiểu dữ liệu, IFNA sẽ hiện thị lỗi đó để bạn biết và sửa, tránh làm sai số liệu mà không hay.

Khi nào nên dùng IFNA thay vì IFERROR?

Khi bạn muốn giữ các cảnh báo lỗi thật khác ngoài chuyện không tìm thấy dữ liệu. Ví dụ bảng báo giá dùng VLOOKUP: nếu không tra thấy thì IFNA cho kết quả trống. Còn nếu giá bị nhập sai định dạng gây lỗi #VALUE!, bạn vẫn thấy cảnh báo để kiểm tra lại file nhập liệu.

Nếu dùng IFERROR cho toàn bộ công thức thì có rủi ro gì?

Có. Nó sẽ biến các lỗi tính toán do sai công thức, thiếu dữ liệu hoặc chia cho 0 thành kết quả mà bạn chọn. Sau này xem lại bạn sẽ không biết vị trí nào đang sai. Ví dụ tổng doanh thu ra ô trống vì lỗi ẩn trong phép chia, dễ dẫn đến quyết định kinh doanh sai trên dữ liệu số.

Có nên kết hợp IFNA với các hàm khác trong cùng một công thức không?

Nên. Bạn dùng IFNA cho phần tra cứu, rồi bọc thêm IFERROR bên ngoài cho những bước sau đó để kiểm soát lỗi tổng thể. Cách này giúp chia rõ phạm vi bắt lỗi: IFNA chỉ làm gọn kết quả khi tìm kiếm hay file nguồn không có dữ liệu, phần còn lại vẫn được giám sát chặt.

Nếu bạn còn phân vân giữa hai nền tảng bảng tính, xem thêm phân tích nên chọn Excel Online hay Google Sheets khi làm việc nhóm để chọn công cụ phù hợp trước khi tối ưu công thức.

Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?

Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận