Menu

엑셀 XLOOKUP 함수 사용법: 수식, 예제, 일치 모드

=XLOOKUP(F2,A2:A6,C2:C6)은 A2:A6에서 F2를 찾아 C2:C6의 같은 행 값을 반환합니다. 찾지 못했을 때의 텍스트, 여러 열 한 번에 반환, 왼쪽 조회, 마지막 일치, 유사 일치와 와일드카드를 알아봅니다.

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

=XLOOKUP(F2,A2:A6,C2:C6)은 A2:A6에서 F2의 값을 찾아 C2:C6의 같은 행 값을 반환합니다. 기본적으로 정확히 일치하는 값을 찾고, 검색 열은 어디에 있어도 되며, Excel 2021이나 Microsoft 365가 필요합니다(Excel 2019 이하에서는 INDEX와 MATCH를 쓰세요). F2에 다른 상품을 입력해 보세요.

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

G2를 클릭하면 검색 범위와 반환 범위가 따로 테두리로 표시됩니다. C2:C6을 B2:B6으로 바꾸면 G2가 분류를 반환합니다. 세어야 할 열 번호가 없으므로 A열과 C열 사이에 열을 삽입해도 수식이 망가지지 않습니다. 엑셀이 두 범위를 함께 옮깁니다.

XLOOKUP 구문

=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
인수하는 일기본값
lookup_value찾을 값입니다.필수
lookup_array검색할 열(또는 행)입니다.필수
return_array값을 반환할 열, 행 또는 블록입니다. lookup_array와 높이가 같아야 합니다.필수
if_not_found일치하는 값이 없을 때 보여 줄 값입니다.#N/A
match_mode0 정확히 일치, -1 정확히 일치 또는 다음으로 작은 값, 1 정확히 일치 또는 다음으로 큰 값, 2 와일드카드.0
search_mode1 처음부터 끝까지, -1 끝에서 처음까지, 2와 -2는 정렬된 데이터에서 이진 검색.1

처음 세 개만 필수입니다. 선택 인수를 건너뛰고 그 뒤 인수를 설정하려면 쉼표 사이를 비워 두세요. =XLOOKUP(F2,A2:A6,C2:C6,,0,-1)은 search_mode를 설정하고 if_not_found는 기본값으로 둡니다.

여러 열을 한 번에 반환하기

XLOOKUP에 여러 열 너비의 반환 범위를 주면 행 전체가 돌아옵니다. 결과는 수식 옆 셀로 분산됩니다.

상품 하나의 모든 항목
B8
ABCD
1ProductCategoryPriceStock
2AppleFruit$1.2040
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
7Look forCarrot
8ResultVegetable$0.8060
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

B8의 수식 하나가 B8:D8을 Vegetable, $0.80, 60으로 채웁니다. C8에 무언가를 입력하면 결과가 들어갈 자리가 없어 B8에 #SPILL!이 나오고, 지우면 결과가 돌아옵니다. 열을 다른 순서로 반환하려면 반환 범위를 CHOOSECOLS로 감싸세요. =XLOOKUP(B7,A2:A6,CHOOSECOLS(B2:D6,3,1))은 Stock, 그다음 Category를 반환합니다.

왼쪽 열을 가져오는 XLOOKUP, 일치 값이 없을 때 메시지

검색 열이 맨 앞에 올 필요가 없습니다. 여기서 XLOOKUP은 C열의 가격을 검색해 A열의 상품명을 반환하는데, VLOOKUP으로는 할 수 없는 일입니다. 네 번째 인수는 그 가격의 상품이 없을 때 보여 줄 값을 정합니다.

이 가격의 상품은?
G2
ABCDEFG
1ProductCategoryPriceStockPriceProduct
2AppleFruit$1.2040$2.40Bread
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

$2.40은 Bread를 반환합니다. F2를 3으로 바꾸면 G2에 #N/A 대신 "No product"가 나옵니다. 네 번째 인수로 ""를 쓰면 비어 보이는 셀이 됩니다. if_not_found는 "찾을 수 없음"만 처리합니다. 높이가 맞지 않는 반환 범위는 여전히 #VALUE!를 내며, 그것은 보여야 하는 오류입니다.

마지막 일치 값 찾기

XLOOKUP은 위에서부터 첫 번째로 일치하는 값을 반환합니다. 여섯 번째 인수 search_mode를 -1로 설정하면 아래에서부터 검색하므로 마지막으로 일치하는 값을 반환합니다. 최근 주문, 가장 최근 가격, 마지막 상태를 찾을 때 씁니다.

고객의 첫 주문과 마지막 주문
G2
ABCDEFG
1DateCustomerAmountCustomerFirstLast
22026-03-02Ben120Ben12060
32026-03-05Ana80
42026-03-09Ben45
52026-03-12Cara200
62026-03-20Ben60
72026-03-24Ana95
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Ben의 첫 주문은 120, 마지막 주문은 60입니다. E2를 Ana로 바꾸면 80과 95가 나옵니다. 이 방법은 행이 날짜 순서대로 있어야 합니다. 그렇지 않다면 대신 고객의 가장 최근 날짜를 조회하세요: =XLOOKUP(1,(B2:B7=E2)*(A2:A7=MAXIFS(A2:A7,B2:B7,E2)),C2:C7).

유사 일치: 다음으로 작은 값, 다음으로 큰 값

match_mode -1은 정확히 일치하는 값을, 없으면 다음으로 작은 값을 반환합니다. 수수료 단계, 세율 구간, 등급 같은 구간의 규칙입니다. TRUE를 쓰는 VLOOKUP과 달리 표를 정렬할 필요가 없습니다. 아래 구간은 일부러 순서 없이 두었습니다.

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

Ben의 4,200은 1,000과 5,000 사이에 있으므로 1,000 구간의 3%를 받습니다. Cara의 5,000은 정확히 일치해 5%입니다. match_mode 1은 반대로 정확히 일치하거나 다음으로 큰 값을 찾으며, "들어가는 가장 작은 상자"나 "다음 배송 시간대"를 구할 때 씁니다. =XLOOKUP(18,{5;12;25;50},{"S";"M";"L";"XL"},,1)은 L을 반환합니다.

와일드카드를 쓰는 XLOOKUP

match_mode 2는 *(아무 문자열)와 ?(한 글자)를 와일드카드로 바꿉니다. 이 모드가 없으면 XLOOKUP은 그 문자 자체를 찾습니다. 정확히 일치에서 와일드카드를 받아들이는 VLOOKUP과 반대이며, 와일드카드 XLOOKUP이 #N/A나 if_not_found 텍스트를 반환하는 흔한 이유입니다:

=XLOOKUP("*coffee*",A2:A6,C2:C6,"None")      None: no product is named *coffee*
=XLOOKUP("*coffee*",A2:A6,C2:C6,"None",2)    2.9, the price of Iced coffee
이름에 텍스트가 들어 있는 첫 상품
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를 먼저 찾아 $2.90을 냅니다. 여섯 번째 인수로 -1을 추가하면 Coffee beans를 찾아 $8.50을 냅니다. 엑셀의 다른 모든 조회처럼 일치는 대소문자를 무시합니다. match_mode 2에서 실제 별표나 물음표를 찾으려면 앞에 물결표를 붙이세요: "~*".

양방향 XLOOKUP

행 전체를 반환하는 XLOOKUP을 두 번째 XLOOKUP의 반환 범위로 쓸 수 있습니다. 안쪽 XLOOKUP이 지역으로 행을 고르고, 바깥쪽 XLOOKUP이 그 행에서 해당 월의 열을 고릅니다.

지역별, 월별 매출
B8
ABCD
1RegionJanFebMar
2North4,2003,9004,800
3South3,1003,6003,300
4East5,2004,7005,600
5West2,8003,0003,400
6RegionSouth
7MonthFeb
8Sales3,600
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

XLOOKUP(B6,A2:A5,B2:D5)는 South의 행인 3100, 3600, 3300을 반환합니다. 바깥쪽 XLOOKUP은 B1:D1에서 Feb를 찾아 그 행의 해당 값인 3,600을 가져옵니다. B6과 B7에서 다른 지역과 월을 골라 보세요. 같은 조회를 INDEX와 MATCH로 쓴 버전은 INDEX와 MATCH 페이지에 있습니다.

이전 엑셀과 Google 스프레드시트의 XLOOKUP

XLOOKUP은 Excel 2021, Excel 2024, Microsoft 365, 웹용 Excel, 모바일 앱에 있습니다. XLOOKUP을 쓴 파일을 Excel 2019 이하에서 열면 다시 계산되는 즉시 수식이 #NAME?을 표시합니다. 파일이 모든 곳에서 동작해야 한다면 모든 버전이 이해하는 INDEX와 MATCH로 조회를 쓰세요:

=XLOOKUP(F2, A2:A6, C2:C6, "Not found")
=IFNA(INDEX(C2:C6, MATCH(F2, A2:A6, 0)), "Not found")

Google 스프레드시트에는 2022년부터 같은 인수의 XLOOKUP이 있습니다. 차이를 나란히 비교하려면 VLOOKUP과 XLOOKUP 비교를 보세요. 두 열(상품과 크기, 이름과 날짜)을 한 번에 기준으로 삼는 =XLOOKUP(1,(B2:B6=E2)*(C2:C6=F2),D2:D6) 패턴은 여러 조건으로 조회하기 페이지에서 설명합니다.

연습: 가격 또는 "Not found"

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

직접 해 보세요: G2에서 F2에 있는 상품의 가격을 반환하고, 목록에 없으면 텍스트 Not found를 반환하세요.

연습: 주문 금액별 할인

할인 단계
E2
ABCDE
1Order fromDiscountOrderDiscount
2$00%$320
3$1005%
4$25010%
5$50015%
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: 각 할인은 해당 주문 금액 이상부터 적용됩니다. E2에서 XLOOKUP으로 D2 주문 금액의 할인율을 반환하세요.

자주 묻는 질문

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

인수 세 개를 넣습니다. 찾을 값, 검색할 열, 반환할 열입니다. =XLOOKUP("Pear",A2:A6,C2:C6)은 A2:A6에서 Pear를 찾아 C2:C6의 같은 행 값을 반환합니다. 따로 지정하지 않으면 정확히 일치하는 값을 찾습니다.

어떤 엑셀 버전에 XLOOKUP이 있나요?

Excel 2021, Excel 2024, Microsoft 365, 웹용 Excel입니다. Excel 2019 이하에서는 수식이 #NAME?을 표시하므로 그곳에서는 =INDEX(C2:C6,MATCH(F2,A2:A6,0))을 쓰세요. Google 스프레드시트에도 XLOOKUP이 있습니다.

XLOOKUP이 #N/A 대신 빈칸이나 텍스트를 반환하게 하려면 어떻게 하나요?

네 번째 인수 if_not_found를 씁니다: =XLOOKUP(F2,A2:A6,C2:C6,"Not found"), 비어 보이는 셀을 원하면 ""를 씁니다. 찾지 못한 경우만 바꾸며, 다른 오류는 그대로 보입니다.

XLOOKUP으로 마지막 일치 값을 찾으려면 어떻게 하나요?

여섯 번째 인수 search_mode를 -1로 설정해 아래에서 위로 검색하게 합니다. =XLOOKUP("Ben",B2:B7,C2:C7,,0,-1)은 Ben의 첫 금액 대신 마지막 금액을 반환합니다.

XLOOKUP이 열을 여러 개 반환할 수 있나요?

있습니다. =XLOOKUP(F2,A2:A6,B2:D6)처럼 여러 열 너비의 반환 범위를 주면 결과가 옆 셀로 분산됩니다. 분산될 셀은 비어 있어야 하며, 아니면 엑셀이 #SPILL!을 표시합니다.

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

Coddy로 코딩 배우기

시작하기