Menu

엑셀 VLOOKUP 함수 사용법: 수식, 예제, #N/A 해결

=VLOOKUP(F2,A2:D6,3,FALSE)는 A2:D6의 첫 열에서 F2를 찾아 같은 행의 세 번째 열 값을 반환합니다. 정확히 일치와 유사 일치, #N/A 해결, 다른 시트에서 조회, 조건 두 개로 조회하기를 알아봅니다.

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

=VLOOKUP(F2,A2:D6,3,FALSE)는 A2:D6의 첫 열에서 F2의 값을 찾아 같은 행의 세 번째 열 값을 반환합니다. 끝의 FALSE는 "정확히 일치하는 값만"이라는 뜻입니다. F2에서 다른 상품을 고르면 가격이 바뀝니다.

상품 가격 조회
G2
ABCDEFG
1ProductCategoryPriceStockLook forPrice
2AppleFruit$1.2040Pear$1.50
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

G2를 클릭하면 표 A2:D6이 테두리로 표시됩니다. 수식의 3을 2로 바꾸면 G2는 가격 대신 분류를 반환합니다. Category가 표의 두 번째 열이기 때문입니다. 일치는 대소문자를 무시하므로 pear도 Pear를 찾습니다.

VLOOKUP 구문

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
인수의미예제에서
lookup_value찾을 값입니다.F2 (Pear)
table_array검색할 표입니다. VLOOKUP은 표의 첫 열에서만 찾습니다.A2:D6
col_index_num반환할 표의 열 번호로, 표의 첫 열(1)부터 셉니다.3 (Price)
range_lookup정확히 일치는 FALSE 또는 0, 유사 일치는 TRUE, 1 또는 생략입니다.FALSE

열 번호는 시트의 A열이 아니라 표의 시작부터 셉니다. C열에서 시작하는 표에서 col_index_num 2는 D열을 뜻합니다. 표의 너비보다 큰 번호는 #REF!를, 0은 #VALUE!를 반환합니다.

소수점으로 쉼표를 쓰는 언어로 설정된 엑셀에서는 인수를 세미콜론으로 구분합니다: =VLOOKUP(F2;A2:D6;3;FALSE).

MATCH로 반환할 열 고르기

숫자 3을 직접 써 두면 누군가 표 안에 열을 삽입했을 때 조용히 망가집니다. 수식은 계속 세 번째 열을 반환하는데, 그 열에는 이제 다른 값이 들어 있습니다. 대신 MATCH가 머리글에서 열 번호를 찾게 하세요. 여기서 G1은 드롭다운입니다. Stock이나 Category를 고르면 G2가 따라 바뀝니다.

머리글에서 열 번호 찾기
G2
ABCDEFG
1ProductCategoryPriceStockLook forPrice
2AppleFruit$1.2040Carrot0.8
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

MATCH(G1,A1:D1,0)은 머리글 행에서 "Price"의 위치인 3을 반환하고, VLOOKUP이 이것을 열 번호로 써서 Carrot의 0.8을 냅니다. 이것이 양방향 조회입니다. 행은 상품으로, 열은 머리글로 고릅니다. 같은 아이디어를 VLOOKUP 대신 INDEX로 쓴 방법은 INDEX와 MATCH 페이지에 있습니다.

유사 일치: TRUE를 쓰는 VLOOKUP

마지막 인수가 TRUE이면 VLOOKUP은 같은 값을 찾지 않습니다. 찾는 값보다 작거나 같은 값 중 가장 큰 값을 찾습니다. 세율 구간, 등급, 배송비, 수수료 단계 같은 구간에 필요한 동작입니다. 첫 열은 작은 값부터 큰 값 순으로 정렬되어 있어야 합니다.

매출에 따른 수수료율
F2
ABCDEF
1Sales fromRateRepSalesRate
200%Ana7500%
310003%Ben4,2003%
450005%Cara5,0005%
5100008%Dev12,5008%
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Ben의 4,200은 A열에 없습니다. 그보다 크지 않은 가장 큰 값은 1,000이므로 3%를 받습니다. Cara의 5,000은 5,000 행과 정확히 일치해 5%를 받습니다. Dev의 12,500은 마지막 구간보다 크므로 마지막 비율인 8%를 받습니다. 첫 구간보다 작은 값(여기서는 음수 매출)은 #N/A를 반환하므로 표가 0에서 시작합니다.

$A$2:$B$5의 $ 기호는 F2를 F5까지 아래로 채울 때 표를 제자리에 고정합니다. 이 기호가 없으면 F3은 A3:B6을 검색해 첫 구간을 건너뜁니다.

네 번째 인수를 생략하면 TRUE와 같습니다. 정렬되지 않은 상품 목록에서는 이것이 눈에 띄지 않는 버그가 됩니다. 엑셀이 목록이 정렬된 것처럼 검색해 다른 행의 가격을 반환하거나, 있는 값에 #N/A를 반환할 수 있습니다. 이름, 코드, ID를 조회할 때는 항상 FALSE로 끝내세요.

VLOOKUP이 #N/A를 반환하는 이유

#N/A는 "찾을 수 없음"을 뜻합니다. 아래 시트는 흔한 원인 세 가지를 보여 주며, G열은 각 조회를 IFNA와 TRIM으로 감싸 반복합니다.

#N/A를 반환하는 조회 세 개
F2
ABCDEFG
1ProductCategoryPriceStockLook forPriceFixed
2AppleFruit$1.2040Kiwi#N/ANot found
3PearFruit$1.5025Milk #N/A$1.10
4CarrotVegetable$0.8060Fruit#N/ANot found
5BreadBakery$2.4015
6MilkDairy$1.1030
#N/A 찾는 값이 조회 범위에 없습니다.
  1. 값이 표에 없습니다. Kiwi는 A2:A6에 없습니다. 진짜 "찾을 수 없음"이며, IFNA(...,"Not found")가 이것을 읽을 수 있는 텍스트로 바꿉니다. E2를 Apple로 바꾸면 두 열 모두 가격을 보여 줍니다.
  2. 남는 공백. E3에는 뒤에 공백이 붙은 "Milk "가 들어 있어 Milk와 같지 않습니다. TRIM(E3)이 공백을 지워 G3이 가격을 찾습니다. 공백이 표 쪽에 있다면 조회할 때마다 처리하지 말고 A열을 TRIM으로 한 번 정리하세요.
  3. 값이 다른 열에 있습니다. Fruit는 있지만 B열에 있습니다. VLOOKUP은 표의 첫 열에서만 검색하므로 E4는 두 열 모두에서 실패합니다. 검색할 열에서 표를 시작하거나, 검색 열과 반환 열을 따로 받는 XLOOKUP을 쓰세요.

조회 수식은 IFERROR가 아니라 IFNA로 감싸세요. IFNA는 #N/A만 잡으므로, 잘못된 열 번호에서 생긴 #REF!는 "Not found"로 숨겨지지 않고 그대로 드러납니다.

원인이 두 가지 더 있습니다:

  • 텍스트로 저장된 숫자. A열에 상품 코드가 텍스트로 들어 있고(주로 가져온 데이터에서 생기며 모서리에 작은 초록색 삼각형이 있음) F2에 숫자 101이 있으면, 목록에 101이 있는데도 =VLOOKUP(F2,A2:B6,2,FALSE)는 #N/A를 반환합니다. 한쪽을 변환하세요. =VLOOKUP(F2&"",A2:B6,2,FALSE)는 텍스트 "101"을 검색하고, F2가 텍스트일 때 =VLOOKUP(VALUE(F2),A2:B6,2,FALSE)는 숫자를 검색합니다.
  • 정렬되지 않은 데이터에서 유사 일치, 위 섹션에서 설명한 경우입니다.

VLOOKUP이 빈칸 대신 0을 반환할 때

VLOOKUP이 찾아간 셀이 비어 있으면 엑셀은 빈 셀이 아니라 0을 보여 줍니다. 그러면 Stock 열의 0은 재고가 입력된 적이 없는데도 "품절"로 읽힙니다. 수식에 &""를 붙이거나 결과의 길이를 검사하세요:

=VLOOKUP(F2,A2:D6,4,FALSE)&""
=IF(LEN(VLOOKUP(F2,A2:D6,4,FALSE))=0,"",VLOOKUP(F2,A2:D6,4,FALSE))

첫 번째가 더 짧지만 반환하는 모든 숫자를 텍스트로 바꾸므로 나중에 SUM이 건너뜁니다. 두 번째는 숫자를 숫자로 유지합니다.

다른 시트에서 VLOOKUP

표 앞에 시트 이름과 !를 씁니다. 엑셀에서 수식을 만들 때 다른 시트의 탭을 클릭하고 범위를 선택하면 엑셀이 Prices!A2:B6을 대신 써 줍니다. 여기서는 Orders 탭이 Prices 탭에서 가격을 조회합니다.

Prices 시트에서 가격을 가져오는 주문
D2
ABCDE
1OrderProductQtyPriceTotal
21001Pear3$1.50$4.50
31002Milk2$1.10$2.20
41003Apple5$1.20$6.00
51004Bread1$2.40$2.40
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Prices 탭을 열고 Apple의 가격을 바꾸면 주문 합계가 바뀝니다. 두 가지를 알아 두세요:

  • 공백이 있는 시트 이름은 작은따옴표가 필요합니다: =VLOOKUP(B2,'Price list'!$A$2:$B$6,2,FALSE).
  • 다른 통합 문서에 있는 표는 대괄호 안에 파일 이름을 붙입니다: [Prices.xlsx]Prices!$A$2:$B$6. 그 파일이 닫혀 있으면 엑셀은 수식에 전체 경로를 표시하고, 저장된 파일을 기준으로 조회를 계속합니다.

와일드카드를 쓰는 VLOOKUP(부분 일치)

FALSE를 쓰면 찾는 값에 와일드카드를 넣을 수 있습니다. *는 글자 수와 상관없이 아무 문자를, ?는 정확히 한 글자를 뜻합니다. "*"&E2&"*"는 이름에 E2의 텍스트가 들어 있는 첫 번째 상품을 찾습니다.

이름 일부로 상품 찾기
F2
ABCDEF
1ProductCategoryPriceContainsPrice
2Green teaDrinks$3.20coffee$2.90
3Iced coffeeDrinks$2.90
4Coffee beansPantry$8.50
5Black teaDrinks$2.70
6Orange juiceDrinks$3.40
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

"coffee"는 Iced coffee와 Coffee beans 모두와 일치하며, VLOOKUP은 위에서부터 첫 번째 것인 $2.90을 반환합니다. E2를 bean으로 바꾸면 $8.50이 나오고, juice로 바꿔 볼 수도 있습니다. 실제 별표나 물음표를 검색하려면 앞에 물결표를 붙이세요: "~*".

VLOOKUP으로 왼쪽 열 가져오기

VLOOKUP은 검색하는 열보다 왼쪽에 있는 열을 반환할 수 없습니다. col_index_num은 오른쪽으로만 세고, 음수는 오류입니다. 주어진 가격의 상품을 찾으려면 XLOOKUP이나 INDEX와 MATCH로 C열을 검색하고 A열을 반환하세요:

=XLOOKUP(2.4, C2:C6, A2:A6)              Excel 2021 and Microsoft 365
=INDEX(A2:A6, MATCH(2.4, C2:C6, 0))      every version

첫 번째 시트의 데이터에서 둘 다 Bread를 반환합니다. 자세한 설명은 XLOOKUP에 있습니다.

연습: 무게별 배송비

배송 요금
E2
ABCDE
1Weight from (kg)CostWeight (kg)Cost
20$4.507
32$6.00
45$9.50
510$14.00
620$22.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: 각 요금은 해당 무게부터 목록의 다음 무게 전까지 적용됩니다. E2에서 VLOOKUP으로 D2에 있는 소포 무게의 배송비를 반환하세요.

조건이 두 개인 VLOOKUP

VLOOKUP은 찾는 값을 하나만 받습니다. 두 열을 기준으로 찾으려면 두 열을 합친 도우미 열을 만들어 표의 맨 앞에 두고, 똑같이 합친 텍스트를 조회합니다. 아래 A열은 =B2&"-"&C2를 아래로 채운 것이므로 Coffee-Small, Coffee-Large 같은 값이 들어 있습니다.

상품과 크기로 가격 찾기
G2
ABCDEFG
1KeyProductSizePriceProductSizePrice
2Coffee-SmallCoffeeSmall$2.50TeaLarge
3Coffee-LargeCoffeeLarge$3.50
4Tea-SmallTeaSmall$2.00
5Tea-LargeTeaLarge$3.00
6Juice-SmallJuiceSmall$3.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: A열은 상품과 크기를 대시로 합친 것입니다. G2에서 E2의 상품과 F2의 크기에 맞는 가격을 반환하세요.

구분 기호가 중요합니다. "Tea"&"Large"는 TeaLarge가 되어 A열의 어떤 값과도 일치하지 않습니다. Excel 2021과 Microsoft 365에서는 =XLOOKUP(1,(B2:B6=E2)*(C2:C6=F2),D2:D6)으로 도우미 열 없이 할 수 있습니다. 그 방법과 INDEX/MATCH 버전은 여러 조건으로 조회하기에서 보여 줍니다.

자주 묻는 질문

엑셀에서 VLOOKUP은 어떻게 쓰나요?

=VLOOKUP(을 입력하고 인수 네 개를 넣습니다. 찾을 값, 표(첫 열에 그 값이 있어야 함), 반환할 열의 번호, 정확히 일치를 뜻하는 FALSE입니다. =VLOOKUP("Pear",A2:D6,3,FALSE)는 A열에서 Pear를 찾아 그 행의 C열 값을 반환합니다.

VLOOKUP 끝의 TRUE나 FALSE는 무슨 뜻인가요?

FALSE(또는 0)는 정확히 일치를 요청하며 값이 없으면 #N/A를 반환합니다. TRUE(또는 1, 또는 인수 생략)는 유사 일치를 요청합니다. 찾는 값보다 작거나 같은 값 중 가장 큰 값을 찾으며, 첫 열이 오름차순으로 정렬되어 있을 때만 제대로 동작합니다.

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

표의 첫 열에서 값을 찾지 못했기 때문입니다. 흔한 원인은 오타, 남는 공백("Milk "는 "Milk"가 아님), 한쪽에만 텍스트로 저장된 숫자, 다른 열에 있는 값입니다. 원하는 텍스트를 보여 주려면 수식을 IFNA로 감싸세요: =IFNA(VLOOKUP(F2,A2:D6,3,FALSE),"Not found").

VLOOKUP으로 왼쪽 열을 가져올 수 있나요?

없습니다. VLOOKUP은 표의 첫 열보다 오른쪽에 있는 열만 반환합니다. Excel 2021이나 Microsoft 365에서는 =XLOOKUP(F2,C2:C6,A2:A6)을, 모든 버전에서는 =INDEX(A2:A6,MATCH(F2,C2:C6,0))을 쓰세요.

다른 시트에서 VLOOKUP하려면 어떻게 하나요?

범위 앞에 시트 이름과 느낌표를 붙입니다: =VLOOKUP(B2,Prices!$A$2:$B$6,2,FALSE). 시트 이름에 공백이 있으면 작은따옴표로 감싸세요: 'Price list'!$A$2:$B$6.

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

Coddy로 코딩 배우기

시작하기