Menu

엑셀 IFERROR 함수: #N/A와 #DIV/0! 바꾸기(IFNA 포함)

=IFERROR(B2/C2,0)은 B2/C2를 반환하고, 나눗셈이 오류를 내면 0을 반환합니다. VLOOKUP과 함께 쓰는 IFERROR, 오류 대신 빈칸 반환, 조회에는 IFNA가 더 나은 이유, 모든 오류를 숨기면 진짜 실수가 가려지는 이유를 알아봅니다.

이 페이지의 모든 시트는 실제로 동작합니다. 숫자나 수식을 바꾸면 다시 계산됩니다.

=IFERROR(B2/C2,0)은 B2/C2의 결과를 반환하고, 그 결과가 오류이면 0을 반환합니다. 첫 번째 인수는 원하는 수식이고, 두 번째 인수는 그 수식이 어떤 오류를 내든 대신 보여 줄 값입니다.

개당 가격
E2
ABCDE
1ProductRevenueUnitsPlainWith IFERROR
2Pens$12080$1.50$1.50
3Paper$30050$6.00$6.00
4Ink$900#DIV/0!$0.00
5Tape$4530$1.50$1.50
6Clips$00#DIV/0!$0.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Ink와 Clips는 수량이 0이라서 D열의 단순 나눗셈은 #DIV/0!을 표시합니다. E열은 그 행에 $0.00을, 나머지 행에는 정상 가격을 보여 줍니다. C4에 15를 입력하면 두 열 모두 Ink의 가격을 보여 줍니다.

IFERROR 구문

=IFERROR(value, value_if_error)
  • value는 계산할 수식입니다.
  • value_if_error는 value가 어떤 오류든 낼 때 반환됩니다: #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, #NULL!, 그리고 #CALC! 같은 새 오류도 포함합니다.
  • value가 오류가 아니면 IFERROR는 그 값을 그대로 반환합니다.

대체 값에는 숫자(0), 텍스트("Not found"), 빈 텍스트(""), 다른 수식을 넣을 수 있습니다. 예를 들어 다른 표에서 한 번 더 조회할 수 있습니다: =IFERROR(VLOOKUP(E2,A2:C6,3,FALSE),VLOOKUP(E2,G2:I6,3,FALSE)).

VLOOKUP과 함께 쓰는 IFERROR

조회 함수는 값이 표에 없으면 #N/A를 반환합니다. IFERROR로 감싸면 대신 메시지를 보여 줍니다:

가격 조회
F2
ABCDEF
1ProductCategoryPriceLook forPrice
2AppleFruit$1.20Pear$1.50
3PearFruit$1.50KiwiNot found
4CarrotVegetable$0.80Milk$1.10
5BreadBakery$2.40
6MilkDairy$1.10
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Kiwi는 목록에 없으므로 F3에 Not found가 나옵니다. A4에 Carrot 대신 Kiwi를 입력하면 F3이 그것을 찾습니다. XLOOKUP에서는 네 번째 인수가 "찾을 수 없음" 값이라서 이 용도로 IFERROR가 필요 없습니다: =XLOOKUP(E2,A2:A6,C2:C6,"Not found").

IFNA: #N/A만 잡기

IFNA는 IFERROR처럼 동작하지만 #N/A만 바꿉니다. 조회에서는 보통 이것이 원하는 동작입니다. #N/A는 정상적인 답인 "찾을 수 없음"을 뜻하지만, 다른 오류는 수식 자체가 잘못되었다는 뜻이기 때문입니다. 이 시트의 수식은 열이 세 개인 표에서 4번째 열을 요청하는 오타가 있습니다:

IFERROR는 오타를 숨기고 IFNA는 드러냅니다
F2
ABCDEFG
1ProductCategoryPriceLook forIFERRORIFNA
2AppleFruit1.2PearNot found#REF!
3PearFruit1.5
4CarrotVegetable0.8
5BreadBakery2.4
6MilkDairy1.1
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Pear는 표에 있는데도 F2에 Not found가 나옵니다. IFERROR가 잘못된 열 번호에서 생긴 #REF!를 상품이 없을 때와 같은 메시지로 바꿨기 때문입니다. G2는 #REF!를 그대로 통과시키므로 수식이 망가졌다는 것을 알 수 있습니다. G2의 4를 3으로 바꾸면 1.5를 반환합니다. IFNA는 Excel 2013 이상이 필요합니다.

오류 대신 빈칸 반환하기

아무것도 보이지 않게 하려면 대체 값으로 빈 텍스트, 즉 큰따옴표 두 개를 씁니다:

오류는 빈칸으로 둔 성장률
D2
ABCD
1MonthLast yearThis yearGrowth
2Jan20024020%
3Feb0150
4Mar180171-5%
5Apr90
6May25030020%
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

2월과 4월은 작년 매출이 없어서 성장률을 계산할 수 없으므로 셀이 비어 있습니다. 나머지 달은 20%, -5%, 20%를 보여 줍니다. ""가 든 셀에는 텍스트가 있습니다. SUM과 AVERAGE는 이 셀을 건너뛰지만 =D3*2는 #VALUE!를 냅니다. 이후 수식이 그 열로 계산을 한다면 대신 0을 반환하세요.

연습: 대체 값이 있는 조회

재고 조회
F2
ABCDEF
1ProductStockLook forStock
2Apple40Kiwi
3Pear25
4Carrot60
5Bread12
6Milk30
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: F2에서 A2:B6을 이용해 E2에 있는 상품의 재고를 조회하고, 목록에 없으면 "Not found"를 표시하세요.

모든 오류를 숨기면 실수까지 가려지는 이유

IFERROR는 아무것도 고치지 않습니다. 셀에 무엇을 보여 줄지 정할 뿐입니다. 수식을 IFERROR로 감싸기 전에:

  1. 오류가 생기는 이유를 찾으세요. 비어 있는 Units 셀 때문에 #DIV/0!이 생긴다면, 진짜 해결책은 가격 0이 아니라 누군가 입력해야 할 데이터일 수 있습니다.
  2. 조회에는 IFNA를 쓰세요. 그래야 잘못된 열 번호(#REF!), 틀린 이름(#NAME?), 숫자 열의 텍스트(#VALUE!)가 계속 드러납니다.
  3. 나눗셈은 특정 경우만 검사하세요. =IF(C2=0,0,B2/C2)는 나누는 수가 0인 경우만 처리하고, B2의 잘못된 참조는 여전히 오류를 보여 줍니다. 두 방법은 #DIV/0! 페이지에서 비교합니다.
  4. 데이터로 오해받지 않을 대체 값을 고르세요. 가격 열의 0은 실제 가격처럼 보이고 평균을 낮춥니다. ""나 "Not found"는 그렇지 않습니다.

수식이 정상이어야 할 행에서 올바른 결과를 낸 뒤에, 마지막으로 감싸세요.

자주 묻는 질문

IFERROR와 VLOOKUP을 함께 쓰려면 어떻게 하나요?

조회 수식을 감쌉니다: =IFERROR(VLOOKUP(E2,A2:C6,3,FALSE),"Not found"). E2가 첫 열에 없으면 셀에 #N/A 대신 Not found가 나옵니다. =IFNA(VLOOKUP(E2,A2:C6,3,FALSE),"Not found")도 같은 일을 하면서 다른 오류는 그대로 보여 줍니다.

IFERROR가 빈 셀을 반환하게 하려면 어떻게 하나요?

두 번째 인수로 빈 텍스트를 씁니다: =IFERROR(B2/C2,""). 셀은 비어 보이지만 텍스트가 들어 있으므로 그 셀에 =D2+1을 쓰면 #VALUE!가 나옵니다. SUM과 AVERAGE는 그 셀을 건너뜁니다.

IFERROR와 IFNA는 무엇이 다른가요?

IFERROR는 #N/A, #DIV/0!, #VALUE!, #REF!, #NAME?, #NUM!, #NULL! 등 모든 오류를 바꿉니다. IFNA는 조회의 "찾을 수 없음"인 #N/A만 바꾸고 다른 오류는 모두 보여 주므로, 망가진 수식이 숨겨지지 않습니다.

엑셀에서 #N/A를 0으로 바꾸려면 어떻게 하나요?

수식을 IFNA로 감싸고 값으로 0을 넣습니다: =IFNA(VLOOKUP(E2,A2:C6,3,FALSE),0). XLOOKUP에는 네 번째 인수로 대체 값이 들어 있습니다: =XLOOKUP(E2,A2:A6,C2:C6,0).

어떤 엑셀 버전에 IFERROR와 IFNA가 있나요?

IFERROR는 Excel 2007부터, IFNA는 Excel 2013부터 있습니다. 오래된 파일에서는 =IF(ISERROR(B2/C2),0,B2/C2)를 볼 수 있는데, IFERROR와 같은 일을 하지만 수식을 두 번 계산합니다.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기