Menu

엑셀 #N/A 오류: VLOOKUP, XLOOKUP 값을 찾을 수 없음 해결

#N/A는 조회가 찾던 값을 찾지 못했다는 뜻입니다. 오타, 남는 공백, 수식을 아래로 채울 때 움직인 표 범위를 확인하고, 정말로 없는 값에는 IFNA로 메시지를 보여 주세요.

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

#N/A는 "not available(사용할 수 없음)"이라는 뜻으로, VLOOKUP, XLOOKUP, MATCH 같은 조회가 찾던 값을 찾지 못했다는 뜻입니다. 아래의 =VLOOKUP(E2,A2:B6,2,FALSE)는 Kiwi가 목록에 없으므로 #N/A를 반환합니다. E2를 Pear로 바꾸면 1.5를 반환합니다.

없는 제품 조회하기
F2
ABCDEF
1ProductPriceLook forPrice
2Apple1.2Kiwi#N/A
3Pear1.5
4Plum0.8
5Bread2.4
6Milk1.1
#N/A 찾는 값이 조회 범위에 없습니다.

값이 정말로 없다면 #N/A가 맞는 답이며, 아래에서 다룰 IFNA가 이를 메시지로 바꿉니다. 고칠 가치가 있는 경우는 값이 있는데도 조회가 실패하는 경우입니다. 일부 언어의 엑셀은 이 오류를 독일어 #NV, 포르투갈어와 이탈리아어 #N/D, 러시아어 #Н/Д, 터키어 #YOK처럼 자기 이름으로 보여 주지만 같은 오류입니다.

조회 수식을 아래로 채운 뒤 생기는 #N/A

실제 시트에서 가장 흔한 원인입니다. 첫 행에서는 수식이 동작하는데, 제품이 목록에 있는데도 아래 몇 행은 #N/A를 보여 줍니다.

$ 없는 표 범위
F4
ABCDEF
1ProductPriceOrderPrice
2Apple1.2Apple1.2
3Pear1.5Plum0.8
4Plum0.8Pear#N/A
5Bread2.4Milk1.1
6Milk1.1Apple#N/A
#N/A 찾는 값이 조회 범위에 없습니다.

F4를 클릭해 보세요. 표 범위가 F2보다 두 행 아래인 A4:B8입니다. 수식을 아래로 채우면서 범위도 함께 움직였기 때문에 Pear(3행)와 Apple(2행)이 범위 밖으로 나갔습니다. F3과 F5가 동작하는 것은 Plum과 Milk가 아직 범위 안에 있기 때문일 뿐입니다. F2를 클릭해 범위를 $A$2:$B$6으로 바꾸면 열 전체가 따라 바뀌고 모든 가격이 나타납니다. $ 기호는 범위를 고정합니다. 절대 참조를 참고하세요.

남는 공백 때문에 생기는 #N/A

뒤에 공백이 붙은 "Pear "와 "Pear"는 엑셀에게 다른 값입니다. 공백은 손으로 입력한 데이터, 웹 페이지에서 복사한 데이터, 다른 시스템에서 내보낸 데이터에서 오며 셀에서는 보이지 않습니다.

표에 붙은 끝 공백
E2
ABCDEF
1ProductPriceLook forPriceLength of A2
2Pear 1.5Pear#N/A5
3Apple1.2
4Plum0.8
#N/A 찾는 값이 조회 범위에 없습니다.

E2는 #N/A를 반환합니다. F2가 원인을 보여 줍니다. Pear는 네 글자인데 A2는 다섯 글자입니다. A2의 공백을 지우면 조회가 동작합니다. 확실히 고치는 방법은 세 가지입니다:

  • 열을 정리합니다. 도우미 열에 =TRIM(A2)를 넣고 아래로 채운 뒤, 복사해서 원래 열 위에 홈 > 붙여넣기 > 값을 합니다.
  • 입력하는 값에 공백이 있다면 찾는 값을 정리합니다: =VLOOKUP(TRIM(D2),A2:B4,2,FALSE).
  • 수식 안에서 조회 열 전체를 정리합니다(Excel 2021이나 Microsoft 365): =XLOOKUP(D2,TRIM(A2:A4),B2:B4).

웹 페이지에서 붙여 넣은 텍스트에는 TRIM이 지우지 못하는 줄 바꿈 없는 공백이 있을 수 있습니다. TRIM 페이지에서 SUBSTITUTE(A2,CHAR(160)," ")로 바꾸는 방법을 보여 줍니다.

값이 첫 열에 없을 때 생기는 #N/A

VLOOKUP은 범위의 첫 열에서만 검색하고 그 오른쪽 열을 반환합니다. 다른 열의 값으로 조회하면 표에 있어도 #N/A가 나옵니다.

코드로 조회하기
F2
ABCDEFG
1ProductCodePriceCodeVLOOKUPXLOOKUP
2AppleA-171.2P-22#N/APear
3PearP-221.5
4PlumP-310.8
5BreadB-052.4
6MilkM-401.1
#N/A 찾는 값이 조회 범위에 없습니다.

코드는 B열에 있으므로 A2:C6에 쓴 VLOOKUP은 제품 이름 사이에서 P-22를 찾다가 실패합니다. 또한 코드 앞에 있는 제품 이름을 반환할 수도 없습니다. XLOOKUP은 조회 열과 반환 열을 따로 받으므로 Pear를 찾습니다. Excel 2019 이하에서는 =INDEX(A2:A6,MATCH(E2,B2:B6,0))이 같은 일을 합니다.

텍스트로 저장된 숫자 때문에 생기는 #N/A

텍스트로 입력한 주문 번호('1001, 또는 CSV에서 가져온 것)는 숫자 1001과 절대 일치하지 않으며, 그 반대도 마찬가지입니다. 두 셀 모두 1001로 보이므로 알아보기 어렵습니다. 엑셀에서:

A2:B6 holds order numbers stored as text, E2 holds the number 1001
=VLOOKUP(E2,A2:B6,2,FALSE)          #N/A
=VLOOKUP(E2&"",A2:B6,2,FALSE)       found: E2&"" turns the number into text

A2:B6 holds real numbers, E2 holds "1001" as text
=VLOOKUP(E2,A2:B6,2,FALSE)          #N/A
=VLOOKUP(--E2,A2:B6,2,FALSE)        found: -- turns the text into a number

=ISTEXT(A2)가 어느 쪽이 텍스트인지 알려 주며, 셀 모서리의 작은 초록색 삼각형은 텍스트로 저장된 숫자를 표시합니다. 열 전체를 변환하는 방법은 텍스트를 숫자로를 참고하세요.

IFNA와 IFERROR: 찾지 못했을 때 메시지 보여 주기

값이 정당하게 없을 수 있다면 #N/A보다 쓸모 있는 것을 보여 주세요. IFERROR가 아니라 IFNA를 쓰세요:

잘못된 조회를 감싼 IFNA와 IFERROR
F2
ABCDEFG
1ProductPriceLook forIFNAIFERROR
2Apple1.2Pear#REF!Not found
3Pear1.5
4Plum0.8
5Bread2.4
6Milk1.1
#REF! 존재하지 않는 셀을 참조합니다.

두 수식 모두 두 열짜리 범위에서 3번째 열을 요청하는 실수를 합니다. IFNA는 #REF!를 그대로 내보내므로 버그가 보입니다. IFERROR는 그것을 숨기고 목록에 있는 Pear에 대해 "Not found"라고 합니다. 두 3을 모두 2로 바꾸면 둘 다 1.5를 보여 주고, E2를 Kiwi로 하면 둘 다 "Not found"를 보여 줍니다. XLOOKUP에는 메시지가 내장되어 있습니다: =XLOOKUP(E2,A2:A6,B2:B6,"Not found"). 차이는 IFERROR에 더 자세히 있습니다.

공백 때문에 깨진 조회 고치기

공백이 있어도 가격 찾기
F2
ABCDEF
1ProductPriceLook forPrice
2Apple 1.2Plum
3Pear 1.5
4Plum 0.8
5Bread 2.4
6Milk 1.1
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: 목록의 모든 제품은 끝에 공백이 붙은 채 가져왔으므로 =VLOOKUP(E2,A2:B6,2,FALSE)는 #N/A를 반환합니다. F2에 E2에 있는 제품의 가격을 그래도 반환하는 수식을 쓰세요.

=XLOOKUP(E2,TRIM(A2:A6),B2:B6)는 수식 안에서 목록을 정리합니다. 여기서는 =VLOOKUP(E2&" ",A2:B6,2,FALSE)도 동작하지만, 모든 제품 끝에 공백이 정확히 하나씩 있을 때만입니다. TRIM으로 열을 정리하는 것이 오래가는 해결책입니다.

자주 묻는 질문

엑셀에서 #N/A는 무슨 뜻인가요?

N/A는 "not available(사용할 수 없음)"의 줄임말입니다. 조회 함수(VLOOKUP, HLOOKUP, XLOOKUP, MATCH, XMATCH)가 주어진 값을 찾지 못했다는 뜻입니다. =NA()도 일부러 이 오류를 반환하며, 예를 들어 차트가 점을 0으로 그리지 않고 건너뛰게 할 때 씁니다.

값이 있는데 VLOOKUP이 #N/A를 반환하는 이유는 무엇인가요?

두 값이 정확히 같지 않기 때문입니다. 흔한 이유는 한쪽 끝에 붙은 공백, 한쪽은 텍스트이고 다른 쪽은 숫자인 경우, 또는 $ 없는 표 범위가 수식을 채울 때 아래로 밀려 값이 있는 행이 범위 밖으로 나간 경우입니다.

VLOOKUP이 어떤 행에서는 #N/A를 반환하고 어떤 행에서는 안 하는 이유는 무엇인가요?

수식을 아래로 채우기 전에 표 범위를 고정하지 않아 행마다 한 행씩 아래에서 시작하기 때문입니다. 첫 행의 A2:B6이 두 행 아래에서는 A4:B8이 되어 범위 위쪽의 값을 더 이상 찾지 못합니다. $로 고정하세요: =VLOOKUP(E2,$A$2:$B$6,2,FALSE).

XLOOKUP이 #N/A를 반환하는 이유는 무엇인가요?

값이 조회 배열에 없거나, 공백이나 숫자 대신 텍스트라는 점에서 다르기 때문입니다. XLOOKUP은 기본적으로 정확히 일치를 쓰므로 비슷한 값은 받아들이지 않습니다. 네 번째 인수가 오류를 대신합니다: =XLOOKUP(E2,A2:A6,B2:B6,"Not found").

MATCH가 #N/A를 반환하는 이유는 무엇인가요?

일치 유형이 0이면 VLOOKUP처럼 값이 범위에 없는 것입니다. 일치 유형이 1이거나 생략되면 범위가 오름차순으로 정렬되어 있어야 하고 값이 첫 항목보다 작으면 안 됩니다. 정확히 일치하려면 =MATCH(E2,A2:A6,0)을 쓰세요.

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

Coddy로 코딩 배우기

시작하기