#N/A는 "not available(사용할 수 없음)"이라는 뜻으로, VLOOKUP, XLOOKUP, MATCH 같은 조회가 찾던 값을 찾지 못했다는 뜻입니다. 아래의 =VLOOKUP(E2,A2:B6,2,FALSE)는 Kiwi가 목록에 없으므로 #N/A를 반환합니다. E2를 Pear로 바꾸면 1.5를 반환합니다.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Price | Look for | Price | ||
| 2 | Apple | 1.2 | Kiwi | #N/A | ||
| 3 | Pear | 1.5 | ||||
| 4 | Plum | 0.8 | ||||
| 5 | Bread | 2.4 | ||||
| 6 | Milk | 1.1 |
#N/A 찾는 값이 조회 범위에 없습니다.값이 정말로 없다면 #N/A가 맞는 답이며, 아래에서 다룰 IFNA가 이를 메시지로 바꿉니다. 고칠 가치가 있는 경우는 값이 있는데도 조회가 실패하는 경우입니다. 일부 언어의 엑셀은 이 오류를 독일어 #NV, 포르투갈어와 이탈리아어 #N/D, 러시아어 #Н/Д, 터키어 #YOK처럼 자기 이름으로 보여 주지만 같은 오류입니다.
조회 수식을 아래로 채운 뒤 생기는 #N/A
실제 시트에서 가장 흔한 원인입니다. 첫 행에서는 수식이 동작하는데, 제품이 목록에 있는데도 아래 몇 행은 #N/A를 보여 줍니다.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Price | Order | Price | ||
| 2 | Apple | 1.2 | Apple | 1.2 | ||
| 3 | Pear | 1.5 | Plum | 0.8 | ||
| 4 | Plum | 0.8 | Pear | #N/A | ||
| 5 | Bread | 2.4 | Milk | 1.1 | ||
| 6 | Milk | 1.1 | Apple | #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"는 엑셀에게 다른 값입니다. 공백은 손으로 입력한 데이터, 웹 페이지에서 복사한 데이터, 다른 시스템에서 내보낸 데이터에서 오며 셀에서는 보이지 않습니다.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Price | Look for | Price | Length of A2 | |
| 2 | Pear | 1.5 | Pear | #N/A | 5 | |
| 3 | Apple | 1.2 | ||||
| 4 | Plum | 0.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가 나옵니다.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Code | Price | Code | VLOOKUP | XLOOKUP | |
| 2 | Apple | A-17 | 1.2 | P-22 | #N/A | Pear | |
| 3 | Pear | P-22 | 1.5 | ||||
| 4 | Plum | P-31 | 0.8 | ||||
| 5 | Bread | B-05 | 2.4 | ||||
| 6 | Milk | M-40 | 1.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를 쓰세요:
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Price | Look for | IFNA | IFERROR | ||
| 2 | Apple | 1.2 | Pear | #REF! | Not found | ||
| 3 | Pear | 1.5 | |||||
| 4 | Plum | 0.8 | |||||
| 5 | Bread | 2.4 | |||||
| 6 | Milk | 1.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에 더 자세히 있습니다.
공백 때문에 깨진 조회 고치기
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Price | Look for | Price | ||
| 2 | Apple | 1.2 | Plum | |||
| 3 | Pear | 1.5 | ||||
| 4 | Plum | 0.8 | ||||
| 5 | Bread | 2.4 | ||||
| 6 | Milk | 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)을 쓰세요.