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
| ISERROR | ISERR | ISNA | ERROR.TYPE | |
|---|---|---|---|---|
| #N/A | TRUE | FALSE — deliberately excluded | TRUE | 7 |
| #DIV/0!, #VALUE!, #REF!, #NAME?... | TRUE | TRUE | FALSE | codes 1-6, 8 |
| Mirror wrapper | IFERROR | (none) | IFNA | — |
| Typical use | Any-failure flags | Real-bug detection while tolerating lookup misses | Lookup-miss handling | Branching by error kind |
| Compatibility | Universal | Universal | Universal | Universal — all verified by execution |
Which should you use?
- ISNA — Around lookups — 'did we find it?' — leaving genuine formula bugs visible. The test half of what IFNA does in one step.
- ISERR — The audit trick: TRUE only for NON-lookup errors, so COUNTIF-style sweeps with ISERR find real breakage in a sheet full of expected #N/As.
- ISERROR — Dashboards and validation columns where any failure should raise the same flag — accepting that it can't distinguish a miss from a bug.
Compatibility (from executed tests)
All four execute identically in every version of Excel, Google Sheets, and LibreOffice we test. 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.
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.