본문 바로가기

엑셀

엑셀 IFERROR ISERROR IFNA 함수 사용법 - 수식 오류 처리

반응형

VLOOKUP으로 값을 찾았는데 #N/A, 나누기를 했는데 #DIV/0!, INDEX+MATCH에서 #REF! 같은 오류가 나온 경험이 있을 거예요.
오류가 표시된 셀은 보기에도 안 좋고, 이 셀을 참조하는 다른 수식까지 연쇄적으로 오류가 나요.

 

IFERROR 함수를 사용하면 오류를 원하는 값으로 대체할 수 있습니다.
이 글에서는 엑셀의 주요 오류 유형, IFERROR, ISERROR, IFNA, 그리고 실무 활용법을 다룹니다.

엑셀 주요 오류 유형

오류 의미 대표 원인
#N/A 값을 찾을 수 없음 VLOOKUP/MATCH에서 찾는 값이 없을 때
#DIV/0! 0으로 나눔 나누기 수식에서 분모가 0 또는 빈 셀
#VALUE! 값 유형 오류 숫자 자리에 텍스트가 들어갔을 때
#REF! 참조 오류 참조하던 셀/시트가 삭제됐을 때
#NAME? 이름 인식 불가 함수명 오타, 정의되지 않은 이름 사용
#NUM! 숫자 오류 DATEDIF에서 시작일>종료일 등
#NULL! 교차 영역 없음 범위 지정에서 공백 연산자 오류

IFERROR 함수 - 오류를 원하는 값으로 대체

=IFERROR(수식, 오류시값)

 

수식 결과가 오류이면 두 번째 인수의 값을 반환하고, 오류가 아니면 수식 결과를 그대로 반환해요.
모든 오류 유형(#N/A, #DIV/0!, #VALUE! 등)에 대응합니다.

 

기본 예시:

=IFERROR(A2/B2, 0)

B2가 0이면 #DIV/0! 대신 0을 표시

 

=IFERROR(VLOOKUP(A2,D:E,2,0), "미등록")

VLOOKUP에서 못 찾으면 #N/A 대신 "미등록"을 표시

실무 예제 1 - VLOOKUP 오류 처리

1편에서 다룬 VLOOKUP에서 가장 흔한 오류가 #N/A예요.
찾는 값이 테이블에 없을 때 발생합니다.

 

  A B
1 사번 이름
2 S001 ?
3 S999 ?

 

B2에 입력:

=IFERROR(VLOOKUP(A2,사원목록!A:B,2,0), "해당 사번 없음")

S001이 목록에 있으면 이름을 반환, S999가 없으면 "해당 사번 없음"을 표시합니다.

실무 예제 2 - 달성률 계산 시 0 나누기 방지

  A B C
1 부서 목표 실적
2 영업팀 500 450
3 신규팀 0 30

 

D2 (달성률):

=IFERROR(C2/B2, "-")

영업팀: 0.9 (=450/500), 신규팀: "-" (목표가 0이라 #DIV/0! 대신 "-" 표시)

 

달성률을 퍼센트로 표시하려면 셀 서식을 백분율로 변경하면 돼요.
목표가 0인 경우는 달성률 계산 자체가 무의미하므로 "-"로 표시하는 게 적절합니다.

IFNA 함수 - #N/A 오류만 처리

=IFNA(수식, N/A오류시값)

 

IFERROR는 모든 오류를 처리하지만, IFNA는 #N/A 오류만 처리해요.
다른 오류(#DIV/0!, #REF! 등)는 그대로 표시됩니다.

 

사용 가능 버전: Excel 2013 이상

 

=IFNA(VLOOKUP(A2,D:E,2,0), "미등록")

VLOOKUP의 #N/A만 "미등록"으로 바꾸고, 만약 다른 오류(예: 참조 범위 삭제로 인한 #REF!)가 발생하면 그 오류를 그대로 보여줘요.

 

IFERROR vs IFNA 선택 기준:

  • 모든 오류를 감추고 싶다 → IFERROR
  • #N/A만 처리하고 다른 오류는 발견해야 한다 → IFNA

 

실무에서는 IFNA가 더 안전한 선택이에요.
IFERROR를 남용하면 수식에 진짜 문제가 있어도 오류가 숨겨져서 발견이 어려워집니다.

ISERROR, ISNA 함수 - 오류 여부 확인

=ISERROR(값)    → 오류이면 TRUE, 아니면 FALSE
=ISNA(값)       → #N/A이면 TRUE, 아니면 FALSE

 

결과를 대체하는 게 아니라, 오류인지 여부만 판별하는 함수예요.
IF와 조합해서 사용합니다.

 

=IF(ISERROR(A2/B2), "계산 불가", A2/B2)

이 수식은 IFERROR(A2/B2, "계산 불가")와 같은 결과예요.
IFERROR가 더 간결하므로, 특별한 이유가 없으면 IFERROR/IFNA를 쓰는 게 좋습니다.

ERROR.TYPE 함수 - 오류 종류 식별

=ERROR.TYPE(값)

 

오류 유형을 번호로 반환해요.

반환값 오류
1 #NULL!
2 #DIV/0!
3 #VALUE!
4 #REF!
5 #NAME?
6 #NUM!
7 #N/A

 

오류가 아니면 #N/A를 반환해요.
오류 종류에 따라 다른 처리를 해야 할 때 활용합니다.

IFERROR 사용 시 주의사항

1. IFERROR 남용은 위험

수식에 근본적인 문제가 있어도 IFERROR가 오류를 감춰버려요.
"왜 오류가 나는지"를 먼저 확인하고, 의도된 오류(예: VLOOKUP에서 값 없음)에만 적용하세요.

2. 빈 문자열("")로 대체하면 SUM에 영향 없음

=IFERROR(VLOOKUP(...),"")

오류 시 빈 문자열을 반환하면, 해당 셀을 SUM/AVERAGE에서 참조해도 계산에 영향을 주지 않아요.
하지만 COUNTBLANK에서는 빈 문자열을 빈 셀로 인식하지 않습니다.

3. 수식이 두 번 계산됨 (성능)

IFERROR는 내부적으로 수식을 먼저 실행하고, 오류이면 다시 두 번째 인수를 실행해요.
대량 데이터에서 VLOOKUP을 IFERROR로 감싸면 속도가 느려질 수 있습니다.
5편에서 다룬 XLOOKUP은 자체적으로 "못 찾을 때 값" 인수를 제공하므로 IFERROR가 필요 없어요.

관련 함수 안내

5편의 XLOOKUP은 네 번째 인수로 "못 찾을 때 값"을 직접 지정할 수 있어요.
IFERROR로 감쌀 필요 없이 =XLOOKUP(찾을값, 범위, 반환범위, "없음") 으로 처리 가능합니다.

 

다음 글에서는 찾기·바꾸기의 고급 활용법을 다룰 예정이에요.
와일드카드 검색, 서식으로 찾기, 수식 일괄 변경 등의 기법입니다.

반응형