
IFERROR · ISERROR로 오류 처리 끝! (#N/A · #VALUE! · #DIV/0! 1분 컷)
사용자 앞에선 깔끔한 결과, 백엔드에선 정확한 진단. IFERROR/ISERROR 조합으로 두 마리 토끼를 잡으세요.
문법 & 차이
| 함수 | 형식 | 포인트 |
|---|---|---|
| IFERROR | =IFERROR(수식, 대체값) | 수식에서 어떤 오류든 발생하면 대체값 |
| ISERROR | =ISERROR(값) | 오류면 TRUE/아니면 FALSE → IF(ISERROR(…),"",값) |
| IFNA | =IFNA(수식, 대체값) | #N/A만 대체(조회 실패 전용) |
| ERROR.TYPE | =ERROR.TYPE(값) | 오류 종류 번호 반환(로그/분기용) |
원칙: 표시용엔 IFERROR, 계산 로직엔 ISERROR/IFNA로 분기해 원인 은폐를 피합니다.
메시지/기본값 대체
빈칸 처리
=IFERROR(VLOOKUP(F2, Tbl, 3, FALSE), "")
안내 문구
=IFERROR(1/0, "입력 대기")
기본값(이전 값 유지)
=IFERROR(새값, 이전값)
LOOKUP 계열과 결합
XLOOKUP 기본값 자리에 메시지
=XLOOKUP(F2, 코드, 가격, "미등록 코드")
VLOOKUP/INDEX-MATCH 오류 숨김
=IFERROR(INDEX(가격, MATCH(F2, 코드, 0)), "없음")
여러 후보 키(OR) 조회 — 첫 성공 반환
=LET(v, IFERROR(XLOOKUP({F2,G2,H2}, 코드, 가격), NA()),
XLOOKUP(TRUE, NOT(ISNA(v)), v))
부분 수식 보호(고급)
복합 계산에서 문제 구간만 보호하면 디버깅이 쉬워집니다.
예) 분모 0 방지
=IF( denominator=0, 0, numerator/denominator )
예) TEXTSPLIT 실패만 무해화
=LET(parts, IFERROR(TEXTSPLIT(A2,"-"),""), INDEX(parts,1))
디버깅 & 품질 모니터링
오류 건수 집계
=COUNTIF(범위, "#N/A") + COUNTIF(범위, "#VALUE!") + COUNTIF(범위, "#DIV/0!")
오류 종류별 카운트
=SUM(--(ERROR.TYPE(범위)=7)) // 7=#DIV/0! 예시
사용자에게 친절한 표시
=IFNA(XLOOKUP(F2, 코드, 가격), "미등록(담당자: 내선 1234)")
실수 & 모범사례
- IFERROR 남용 → 원인까지 가린다. 계산 내부는 ISERROR/IFNA로 분기.
- 텍스트 숫자 → #VALUE!의 흔한 원인. VALUE/NUMBERVALUE 또는 원천 데이터 정규화.
- 0 나누기 → 분모 체크 후 나누기.
- 체인 오류 → 앞 단계 오류가 뒤로 전파. 단계별로 분리해 테스트.
- 로깅 누락 → 오류 건수/종류를 별도 시트에 기록해 품질 관리.
요약
| 상황 | 권장 처리 |
|---|---|
| 조회 실패만 | IFNA(수식,"없음") |
| 모든 오류 숨김 | IFERROR(수식,"") |
| 분모 0 | IF(den=0,0,num/den) |
| 디버깅 | ISERROR·ERROR.TYPE로 분기/집계 |