ISERROR, ISERR, ISNA의 차이
ISERR라는 이름은 「오류인가」처럼 들리지만, XLOOKUP이 찾지 못해 낸 N/A에서 이 시트의 ISERR는 FALSE, ISERROR와 ISNA는 TRUE였다. NA()도 같다. Microsoft의 IS 함수 설명은 ISERR가 N/A를 제외한 오류에서 TRUE, ISERROR는 모든 오류에서 TRUE, ISNA는 N/A일 때만 TRUE라고 한다.
빠른 답변
ISERR라는 이름은 「오류인가」처럼 들리지만, XLOOKUP이 찾지 못해 낸 N/A에서 이 시트의 ISERR는 FALSE, ISERROR와 ISNA는 TRUE였다. NA()도 같다. Microsoft의 IS 함수 설명은 ISERR가 N/A를 제외한 오류에서 TRUE, ISERROR는 모든 오류에서 TRUE, ISNA는 N/A일 때만 TRUE라고 한다.
=XLOOKUP("nope",K2:K3,L2:L3) → #N/A
=ISERR(B8) → FALSE
=ISERROR(B8) → TRUE
=ISNA(B8) → TRUE확인 사항
같은 탭에서 1/0은 DIV/0, VALUE("x"), 없는 함수 이름, 범위를 벗어난 INDEX, SQRT(-1)은 각각 VALUE, NAME, REF, NUM이 되었다. 이들은 ISERR와 ISERROR가 모두 TRUE, ISNA는 FALSE다. ERROR.TYPE은 차례로 2, 3, 5, 4, 6이고, N/A 두 건은 7이다. 빈 텍스트와 숫자 12는 세 판정이 모두 FALSE다. NULL은 시험하지 않아 표에 넣지 않았다.
주의점 및 호환성
같은 셀에서 IFERROR는 찾지 못한 경우를 포함해 모든 오류를 잡는다. IFNA는 N/A 두 건만 잡고, DIV/0, VALUE, NAME, REF, NUM은 그대로 남는다. 키를 못 찾은 경우만 처리하고 다른 오류는 남겨 두려면 ISNA나 IFNA를 쓴다. 깨졌지만 단순히 키가 없는 것은 아닐 때를 보려면 ISERR를 쓴다. 빈 텍스트와 12는 오류가 아니며, IFERROR(12,"caught")는 그대로 12다.
영어 상세 예제, 수식 및 작성자 메모
Excel ComparisonISERR is a bad name if you hear “is this an error.” An XLOOKUP miss is an error. I still got FALSE.
=XLOOKUP("nope",K2:K3,L2:L3) → #N/A
=ISERR(B8) → FALSE
=ISERROR(B8) → TRUE
=ISNA(B8) → TRUE
NA() behaved the same way. So did every other #N/A I generated in this file. ISERR is the function that skips #N/A and reports the other error values. Microsoft’s IS functions page says that in so many words: ISERR is TRUE for any error except #N/A; ISERROR is TRUE for any error, including #N/A; ISNA is TRUE only for #N/A.
I ran the rest of the usual suspects in the same tab so I would not have to trust the documentation alone.
| Formula | Result | ISERR | ISERROR | ISNA | ERROR.TYPE |
|---|---|---|---|---|---|
=1/0 | #DIV/0! | TRUE | TRUE | FALSE | 2 |
=NA() | #N/A | FALSE | TRUE | TRUE | 7 |
=VALUE("x") | #VALUE! | TRUE | TRUE | FALSE | 3 |
=NOTAFUNCTION() | #NAME? | TRUE | TRUE | FALSE | 5 |
=INDEX({1,2,3},1,5) | #REF! | TRUE | TRUE | FALSE | 4 |
=SQRT(-1) | #NUM! | TRUE | TRUE | FALSE | 6 |
XLOOKUP miss | #N/A | FALSE | TRUE | TRUE | 7 |
="" | (blank) | FALSE | FALSE | FALSE | (no type) |
=12 | 12 | FALSE | FALSE | FALSE | (no type) |
A blank string is not an error. A plain number is not an error. I wrapped ERROR.TYPE in IFERROR(...,"none") so the last two rows would not explode; those came back none. I did not test #NULL!, so it is not in the table. Microsoft lists it under ISERROR.
What I actually use these for
The wrappers matter more than the TRUE/FALSE functions on most sheets, and I already compared those in IFERROR vs IFNA. The same cells made the difference obvious again:
=IFERROR(1/0,"caught") → caught
=IFNA(1/0,"caught-na") → #DIV/0!
=IFERROR(NA(),"caught") → caught
=IFNA(NA(),"caught-na") → caught-na
=IFERROR(12,"caught") → 12
IFNA left #DIV/0!, #VALUE!, #NAME?, #REF!, and #NUM! alone. It only swallowed the two #N/A cells. IFERROR swallowed everything, including the lookup miss. That is the usual trap: you wanted “if this SKU is missing, say missing,” and you also hid a typo that produced #NAME? or a zero in the denominator. For the #DIV/0! case itself, see DIV/0 Error. For #VALUE!, see VALUE Error.
I reach for ISNA or IFNA when the only “error” I expect is a lookup miss, and I still want other errors to stay visible. I reach for ISERR when I want the opposite test: “this cell is broken, but it is not merely a missing key.” I almost never wrap a formula in ISERROR plus a repeat of the same formula anymore; IFERROR does that job without writing the expression twice. The TRUE/FALSE functions are still useful in a helper column where I need a boolean, not a substitute value.
If several lookup functions are failing at once, start with Lookup Errors rather than sprinkling ISERR on every cell.