엑셀 찾는 값 없을 때 #N/A 대신 빈칸 표시

· 엉클벤 엑셀함수(스프레드시트)

핵심 요약

  • VLOOKUP으로 찾는 이름이 표에 없으면 #N/A가 뜹니다. 이 자리를 빈칸이나 "미등록"으로 바꾸는 방법입니다.
  • 쓰는 조합은 =IFERROR(VLOOKUP(…), "")이고, INDEX·MATCH에도 똑같이 씌웁니다.
  • 결과: 명단에 없는 사람은 빈칸, 있는 사람은 연락처가 채워집니다. 단, 찾은 칸이 비어 있으면 0이 뜨는 함정이 따로 있습니다.

새로 들어온 상담 신청 명단을 기존 고객표와 맞춰 볼 때가 있습니다. VLOOKUP으로 연락처를 끌어오면 이미 아는 고객은 번호가 채워지는데, 처음 온 사람 줄에는 #N/A가 줄줄이 찍힙니다. 틀린 게 아니라 "표에 없다"는 뜻인데, 인쇄하거나 공유하기에는 보기 좋지 않습니다. 이 오류 자리를 빈칸으로 바꾸고, 빈칸이면 "신규"라고 표시해 두면 누구에게 먼저 연락할지 한눈에 보입니다.

컴활 실기에서도 "코드가 없으면 '코드오류'를 표시하시오"처럼 IFERROR로 찾기 함수를 감싸는 조건이 나올 수 있습니다. 이 글은 엑셀 "목적별 함수 조합" 시리즈의 한 편입니다.

#N/A 대신 빈칸 표시 - IFERROR 찾기 조합

예제 표: 기존 고객표와 새 신청 명단

한 시트 안에 A~C열은 기존 고객표, E~H열은 새 신청 명단이 있다고 하겠습니다. 이름과 번호는 모두 가상입니다. 맨 윗줄은 열 문자, 맨 왼쪽은 행 번호입니다. 박지훈 고객의 관심 상품(C4)은 일부러 비워 두었습니다.

ABCDEFGH
1이름연락처관심 상품신청자연락처구분관심 상품
2김민준010-0000-1101실손이서연
3이서연010-0000-1102건강윤지우
4박지훈010-0000-1103(빈칸)박지훈
5최수아010-0000-1104운전자한유진
6정도윤010-0000-1105암정도윤
7강하은010-0000-1106치아임하준
8조예준010-0000-1107실손

기존 고객표가 다른 시트에 있어도 방법은 같습니다. 범위 앞에 시트 이름을 붙여 고객표!$A$2:$C$8처럼 쓰면 됩니다.

완성 수식과 결과

  1. F2 셀을 클릭하고 아래 수식을 입력한 뒤 Enter를 누릅니다.
=IFERROR(VLOOKUP(E2, $A$2:$C$8, 2, FALSE), "")
  1. G2 셀에 아래 수식을 넣습니다. F열이 비어 있으면 "신규", 아니면 "기존고객"이라고 적는 수식입니다.
=IF(F2="", "신규", "기존고객")
  1. F2:G2를 함께 선택하고 채우기 핸들(선택 영역 오른쪽 아래의 작은 네모)을 7행까지 끌어내립니다.
행E 신청자VLOOKUP만 썼을 때F 연락처 (IFERROR)G 구분
2이서연010-0000-1102010-0000-1102기존고객
3윤지우#N/A(빈칸)신규
4박지훈010-0000-1103010-0000-1103기존고객
5한유진#N/A(빈칸)신규
6정도윤010-0000-1105010-0000-1105기존고객
7임하준#N/A(빈칸)신규

신규가 몇 명인지는 =COUNTIF(G2:G7, "신규")로 셉니다. 예제에서는 3이 나옵니다. 범위 $A$2:$C$8에 달러 기호를 붙인 이유는 수식을 아래로 끌어도 고객표 범위가 한 칸씩 밀려 내려가지 않게 하려는 것입니다.

수식 풀어 보기: 안쪽부터 한 겹씩

3행 윤지우와 2행 이서연을 나란히 놓고 따라가 보겠습니다.

  1. 가장 안쪽 VLOOKUP(E3, $A$2:$C$8, 2, FALSE) — A열에서 "윤지우"를 정확히 같은 값(FALSE)으로 찾고, 찾으면 범위의 2번째 열(연락처)을 가져옵니다. 윤지우는 A열에 없으므로 중간 결과는 #N/A입니다. 이서연이라면 010-0000-1102가 나옵니다.
  2. 바깥 IFERROR(중간 결과, "") — IFERROR는 첫 번째 값이 오류인지 봅니다. 오류면 두 번째 값을, 아니면 첫 번째 값을 그대로 돌려줍니다. 윤지우는 #N/A이므로 ""(아무 글자도 없는 빈 문자열)가 나오고, 이서연은 연락처가 그대로 나옵니다.
  3. 옆 칸 IF(F3="", "신규", "기존고객") — F3이 빈 문자열이므로 "신규"가 나옵니다.

두 번째 인수에는 빈칸 말고 원하는 글자를 넣어도 됩니다. =IFERROR(VLOOKUP(E2, $A$2:$C$8, 2, FALSE), "미등록")으로 쓰면 없는 사람 자리에 "미등록"이 적힙니다.

자주 막히는 곳

찾은 칸이 비어 있으면 0이 뜹니다. H2에 관심 상품을 =IFERROR(VLOOKUP(E2, $A$2:$C$8, 3, FALSE), "미등록")로 끌어오면, 박지훈 줄에 "미등록"도 빈칸도 아닌 0이 나옵니다. 박지훈은 표에 있으니 오류가 아니고, 찾아온 C4 칸이 비어 있어서 엑셀이 0으로 보여 주는 것입니다. IFERROR는 오류만 바꾸므로 이 0은 그대로 남습니다.

글자를 가져오는 열이라면 VLOOKUP 뒤에 &""를 붙이면 빈칸으로 바뀝니다.

=IFERROR(VLOOKUP(E2, $A$2:$C$8, 3, FALSE)&"", "미등록")

다만 &""는 결과를 글자로 바꿔 버리므로 날짜나 금액을 가져오는 열에는 쓰지 않습니다. 그럴 때는 =IFERROR(IF(VLOOKUP(…)="", "", VLOOKUP(…)), "미등록")처럼 비었는지 먼저 확인합니다.

  • 분명히 있는 사람인데 "신규"로 나올 때 — 이름 뒤에 공백이 붙어 있는 경우가 흔합니다. "이서연 "처럼 띄어쓰기 하나만 달라도 VLOOKUP은 못 찾고, IFERROR가 그 사실을 빈칸으로 덮어 버립니다. VLOOKUP(TRIM(E2), …)처럼 찾는 값을 TRIM으로 감싸면 앞뒤 공백을 지우고 찾습니다.
  • IFERROR는 실수까지 가립니다 — Microsoft 문서에 따르면 IFERROR는 #N/A뿐 아니라 #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, #NULL!까지 모두 바꿉니다. 예를 들어 범위가 3열인데 열 번호를 5로 잘못 쓰면 원래는 #REF!가 떠야 하지만, IFERROR로 감싸면 전부 빈칸이 되어 실수를 알아채기 어렵습니다. 수식을 처음 만들 때는 IFERROR 없이 결과를 확인한 다음 마지막에 씌우세요.
  • 빈칸 결과로 계산하면 #VALUE! — ""는 숫자가 아니라 빈 글자입니다. =F3*2처럼 곱하면 #VALUE!가 나옵니다. SUM은 글자를 건너뛰므로 합계에는 문제가 없습니다.

다른 방법: INDEX·MATCH, IFNA, XLOOKUP

INDEX·MATCH에 씌우기 — 찾는 열이 가져올 열보다 오른쪽에 있어도 되는 조합입니다. 바깥에 IFERROR를 씌우는 방법은 똑같습니다.

=IFERROR(INDEX($B$2:$B$8, MATCH(E2, $A$2:$A$8, 0)), "")

MATCH가 이름의 위치(몇 번째 줄인지)를 찾고, INDEX가 그 줄의 연락처를 꺼냅니다. 이름이 없으면 MATCH에서 #N/A가 나오고, IFERROR가 그걸 빈칸으로 바꿉니다. 예제에 넣으면 위 표의 F열과 같은 결과가 나옵니다.

IFNA — "없음"만 골라서 바꾸기 — 구문은 IFERROR와 같고, #N/A일 때만 두 번째 값을 돌려줍니다. Microsoft 문서 기준으로 엑셀 2013부터 쓸 수 있습니다. 앞에서 말한 열 번호 실수(#REF!)는 IFNA로 감싸도 그대로 보이므로 실수를 놓치지 않습니다.

=IFNA(VLOOKUP(E2, $A$2:$C$8, 2, FALSE), "")

XLOOKUP — 엑셀 2021 · 2024 · Microsoft 365 전용 — 네 번째 인수(if_not_found)에 찾지 못했을 때 보여 줄 값을 바로 넣습니다. IFERROR로 감쌀 필요가 없습니다. Microsoft 문서에 엑셀 2016·2019에서는 쓸 수 없다고 되어 있으니, 파일을 주고받는 상대의 버전이 섞여 있다면 위의 IFERROR 방식이 안전합니다.

=XLOOKUP(E2, $A$2:$A$8, $B$2:$B$8, "")
방법바꾸는 오류쓸 수 있는 버전
IFERROR + VLOOKUP / INDEX·MATCH모든 오류2016·2019 포함 대부분
IFNA + VLOOKUP#N/A만2013 이후
XLOOKUP 네 번째 인수못 찾은 경우2021 · 2024 · 365

자주 묻는 질문

IFERROR를 썼는데도 VLOOKUP 결과에 0이 나와요.

찾는 사람은 있는데 가져온 칸이 비어 있는 경우입니다. 오류가 아니라서 IFERROR가 바꾸지 않습니다. 글자 열이면 VLOOKUP(…)&"", 날짜·금액 열이면 IF(VLOOKUP(…)="", "", VLOOKUP(…))로 비었는지 먼저 확인합니다.

IFERROR와 IFNA 중 무엇을 써야 하나요?

"표에 없음"만 가리고 싶다면 IFNA가 낫습니다. 열 번호나 범위를 잘못 쓴 실수(#REF! 등)는 그대로 보여 주기 때문입니다. 컴활 문제에서 IFERROR를 지정하면 IFERROR를 씁니다.

분명히 있는 이름인데 빈칸으로 나옵니다.

이름 앞뒤에 공백이 있거나, 숫자와 텍스트 형식이 달라서 VLOOKUP이 못 찾은 것을 IFERROR가 빈칸으로 덮은 경우가 많습니다. IFERROR를 잠시 지워 오류를 확인하고, 공백이면 VLOOKUP(TRIM(E2), …)로 찾습니다.

함께 보면 좋은 글

참고

벤

글쓴이 · 엉클벤

엑셀·스프레드시트 함수, AI 활용법, 컴퓨터·스마트폰 생활 팁을 따라 하기 쉽게 정리합니다. 틀린 내용은 연락처로 알려 주세요. 소개 보기

📚 벤스페이퍼 엑셀 강좌

기초부터 피벗 테이블까지 배우는 순서대로 정리한 엑셀 강좌 전체 목차에서 다음 글을 이어서 볼 수 있습니다.

Powered by Blogger