- 최초 작성일: 1999-10-18
- 최종 수정일: 2026-09-29
- 조회수: 32 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 정보 함수로 오류 처리하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
수식을 넣었는데 아래와 같이 에러가 나타나니 보기가 좋지 않군요. 어떻게 좀 안보이도록 할 수는 없는지요?
정보 함수로 오류 처리하기
핵심 요약
- ISERROR로 수식 결과가 오류인지 먼저 판단한 뒤 오류일 때 빈 문자열이나 안내 문구를 표시할 수 있습니다.
- ISNUMBER를 이용하면 값이 계산 가능한 숫자인지 확인해 숫자와 문자를 구분할 수 있습니다.
- AND와 IF를 함께 사용하면 두 값이 모두 숫자일 때는 더하고, 그렇지 않으면 문자열을 연결하도록 처리할 수 있습니다.
| 목표 | 판매금액 | 달성율 |
| 0 | 1,000 | #DIV/0! |
| 1,200 | 1,250 | 1.0416666667 |
| 2,000 | 2,315 | 1.1575 |
| 1,500 | 890 | 0.5933333333 |
| 0 | 500 | #DIV/0! |
이러한 경우에 유용하게 활용할 수 있는 것이 정보함수라고 하는 것입니다.
어떤 작업을 하기 전에 각 데이터가 어떤 상황인지를 판단해서 다음 작업을 도와주는 함수들입니다.
여기서는 함수의 결과값이 에러가 났느냐 안났느냐를 먼저 알아낸 다음 에러가 났으면 어떤 조치, 그렇지 않으면 또다른 어떤 조치를 취하도록 해주면 되는 것이지요.
| 목표 | 판매금액 | 달성율 | |
| 0 | 1,000 | =IF(ISERROR(C22/B22),"",C22/B22) | |
| 1,200 | 1,250 | 1.0416666667 | |
| 2,000 | 2,315 | 1.1575 | |
| 1,500 | 890 | 0.5933333333 | |
| 0 | 500 |
참고: Excel 2007 이상에서는 IFERROR 함수로 =IFERROR(C22/B22,"")처럼 더 간단하게 오류를 처리할 수 있습니다. 이 글의 ISERROR와 IF 조합은 모든 버전에서 동작합니다.
위의 경우에는 ISERROR() 함수를 활용해서 에러가 났는지 안났는지를 알려주는 것입니다. 만약 여기서 에러가 발생하였다면 "", 즉 아무 것도 표시하지 말고 정상이면 연산을 실행하도록 설정을 해 두었습니다. "" 대신에 "목표금액을 입력하세요" 등과 같은 메시지를 넣어줄 수도 있겠지요?
에러가 났을때 어떻게 하라고 하는것은 여러분들의 생각대로 넣어주시면 됩니다
아래와 같이 에러가 나면 나누는것을 앞과 뒤를 바꾸어줄수도 있겠지요 경우에 따라서…
내친김에 이런 정보함수의 예를 하나 더 살펴 볼까요?
아래의 예와 같이 만약 문자와 문자가 있으면 문자열을 연결시키고 숫자와 숫자라면 두 숫자를 서로 더하는 경우를 예로 들어 봅니다.
아래와 같이 두개의 정보를 그냥 무작정 합계를 내는 수식에 적용을 하면 에러가 나지요?
수식(또는 프로그램)을 만들 때는 항상 사용자가 갖은 희안한 짓(?)을 할 것을 예측을 하고 이것에 대한 대비책을 마련해 두어야 합니다.
| 태평양 | 라네즈 | #VALUE! | =A45+B45 |
| 1000 | 1500 | 2500 | =A46+B46 |
| 헤라 | 900 | #VALUE! | =A47+B47 |
단순히 "+"연산을 수행하게 되면 위와 같이 에러가 납니다.
위의 수식은 아래와 같이 보완하면 에러 메시지가 나타나지 않을 것입니다.
| 태평양 | 라네즈 | 태평양라네즈 | ① |
| 1000 | 1500 | 2500 | ② |
| 헤라 | 900 | 헤라900 | ③ |
① =IF(AND(ISNUMBER(A52),ISNUMBER(B52)),A52+B52,A52 & B52)
② =IF(AND(ISNUMBER(A53),ISNUMBER(B53)),A53+B53,A53 & B53)
③ =IF(AND(ISNUMBER(A54),ISNUMBER(B54)),A54+B54,A54 & B54)
수식이 좀 복잡해 보이지요? 하지만 복잡한 게 아니라 복잡하게 보일 따름입니다.
우선 ISNUMBER() 함수는 주어진 인수의 값이 계산을 할 수 있는 숫자라면 참값을 돌려주고 그렇지 않다면 거짓값을 돌려줍니다(리턴해 준다고도 하지요)
| FALSE | =ISNUMBER(A52) |
| TRUE | =ISNUMBER(A53) |
| FALSE | =ISNUMBER(A54) |
이렇게 주어진 정보가 산수를 할수가 있는 숫자정보인지 그렇지않은 문자정보 인지를 알려주는 것도 정보함수라고 할 수 있습니다.
AND() 함수에 대해서는 설명을 드렸던가요? 에라 다 설명드리지요 뭐!
AND함수는 주어진 인수가 모두 참일 경우에만 TRUE값을 돌려 줍니다. 하나라도 거짓이면 FALSE (거짓)이 되는 것이구요
그래서 위의 AND(태평양(숫자가 아니니까 거짓),라네즈(역시 거짓))인수가 모두 거짓이니까 AND() 함수의 결과 값은 거짓이 되겠지요?
아래의 것을 하나하나 풀어보도록 하지요
=IF(AND(ISNUMBER(A52),ISNUMBER(B52)),A52+B52,A52 & B52)
=IF(AND(ISNUMBER(태평양),ISNUMBER(라네즈)),A52+B52,A52 & B52)
=IF(AND(거짓,거짓),A52+B52,A52 & B52)
if() 함수는 설명이 필요없겠지요? 참이면 첫번째, 거짓이면 두번째 수식을 실행하는 함수입니다.
=IF(거짓,A52+B52,A52 & B52)
거짓이니까 두번째 수식 즉 A52 & B52라는 문자열을 합치는 수식을 실행하는 것입니다.
(차~암 친절하게 잘 설명한다!!!)
AND() 함수와 반대되는 것으로 OR() 함수가 있습니다. 두 개(이상의) 조건 중 하나라도 참이면 OR() 함수의 값은 참이 되는 것입니다. 이것은 직접 해보시기 바랍니다.
다음에 또…
정리 — 정보 함수로 오류 처리하기
| 구분 | 내용 |
|---|---|
| 문제 | 수식 결과가 오류일 때 오류 값이 그대로 표시되어 보기 좋지 않음 |
| 정보 함수 | 데이터가 어떤 상황인지 판단해 다음 작업을 돕는 함수 |
| 오류 숨기기 | =IF(ISERROR(C22/B22),"",C22/B22) 오류이면 빈 문자열을 표시하고 아니면 나눗셈을 실행 |
| ISNUMBER | 계산할 수 있는 숫자이면 TRUE, 아니면 FALSE |
| AND와 OR | AND는 인수가 모두 참일 때만 TRUE, OR는 하나라도 참이면 TRUE |
| 숫자와 문자 구분 | =IF(AND(ISNUMBER(A52),ISNUMBER(B52)),A52+B52,A52 & B52) 둘 다 숫자이면 더하고 아니면 문자열로 연결 |
자주 묻는 질문 (FAQ)
Q1. 수식 결과의 오류가 화면에 보이지 않게 하려면 어떻게 하나요?
ISERROR 함수로 결과가 오류인지 먼저 판단하고, 오류이면 빈 문자열이나 안내 메시지를 표시하고 아니면 원래의 계산을 실행하도록 IF 함수와 조합합니다.
Q2. ISNUMBER 함수는 무엇을 돌려주나요?
주어진 인수가 계산할 수 있는 숫자이면 TRUE를, 그렇지 않으면 FALSE를 돌려줍니다.
Q3. 문자와 숫자가 섞인 두 값을 안전하게 합치려면 어떻게 하나요?
IF와 AND, ISNUMBER 함수를 조합해 두 값이 모두 숫자이면 더하고, 그렇지 않으면 문자열로 연결합니다.
마치며
수식을 만들 때는 사용자가 예상 밖의 값을 넣을 경우를 대비해 정보 함수로 오류를 미리 처리해 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.