← All comparisons

ISERROR vs ISERR vs ISNA: how wide a net

Three error detectors that differ only in scope: ISERROR catches everything, ISNA catches only #N/A (the 'not found' signal), and ISERR is the odd middle child — everything EXCEPT #N/A. Same philosophy as IFERROR vs IFNA: match the net to what you actually expect.

The differences at a glance

ISERRORISERRISNAERROR.TYPE
#N/ATRUEFALSE — deliberately excludedTRUE7
#DIV/0!, #VALUE!, #REF!, #NAME?...TRUETRUEFALSEcodes 1-6, 8
Mirror wrapperIFERROR(none)IFNA
Typical useAny-failure flagsReal-bug detection while tolerating lookup missesLookup-miss handlingBranching by error kind
CompatibilityUniversalUniversalUniversalUniversal — all verified by execution

Which should you use?

Compatibility (Excel for the web, Sheets & LibreOffice executed; desktop Excel per docs)

All four execute identically in every LibreOffice build and in the Google Sheets run we execute (desktop Excel per Microsoft's docs — we do not run desktop Excel). ERROR.TYPE is the escalation path when the boolean tests aren't enough — it returns a code per error kind (#N/A is 7), letting one formula branch differently on misses vs genuine faults. Excel for the web is a separate application with its own calculation engine, and that one we do execute: all 20 corpus cases for these functions matched the documented values there (recalculated on OneDrive, 2026-09-01); one further case, =ISERROR(INDIRECT("'Nope'!B2")), came back as an unresolved external-workbook link through that round trip and is excluded rather than scored; the per-case values are on the individual function pages.

Example formulas

Lookup miss?=ISNA(MATCH(D2,A:A,0))
Real bugs only (ignores #N/A)=SUMPRODUCT(--ISERR(B2:B100))
Branch by error kind=IF(ISNA(A2),"missing",IF(ISERROR(A2),"broken",A2))

Full per-version details on each function page: ISERROR · ISERR · ISNA · ERROR.TYPE.

How-to recipes using these functions