Menu

엑셀 여러 조건 조회: XLOOKUP, INDEX MATCH 다중 조건

=XLOOKUP(1,(A2:A7=E2)*(B2:B7=F2),C2:C7)은 A열이 E2와, B열이 F2와 일치하는 행의 값을 반환합니다. INDEX MATCH 버전, VLOOKUP용 도우미 열, 모든 일치 행을 가져오는 FILTER를 알아봅니다.

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

=XLOOKUP(1,(A2:A7=E2)*(B2:B7=F2),C2:C7)은 상품이 E2이고 크기가 F2인 행의 가격을 반환합니다. 각 비교식이 모든 행을 검사하고, 둘을 곱하면 둘 다 참인 곳에서만 1이 되며, XLOOKUP이 그 1을 찾습니다. Excel 2021이나 Microsoft 365가 필요하며, 아래의 INDEX MATCH 버전은 모든 버전에서 동작합니다.

상품과 크기로 가격 찾기
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50TeaLarge$3.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Tea와 Large는 5행에서 만나므로 G2는 $3.00을 반환합니다. Juice와 Small을 고르면 다른 행에서 다시 $3.00이 나옵니다. 두 조건에 모두 맞는 행이 없는 경우를 위해 네 번째 인수를 추가하세요: =XLOOKUP(1,(A2:A7=E2)*(B2:B7=F2),C2:C7,"No such item").

곱한 조건이 동작하는 방식

A2:A7=E2는 모든 상품을 E2와 비교해 TRUE나 FALSE 값 여섯 개를 반환합니다. 이런 목록 두 개를 곱하면 TRUE는 1, FALSE는 0이 되고, 두 목록 모두에서 1인 행만 1이 됩니다. D열은 수식 하나에서 분산된 그 목록을 보여 줍니다.

XLOOKUP이 검색하는 배열
D2
ABCDEFG
1ProductSizePriceBoth matchProductSize
2CoffeeSmall$2.500TeaLarge
3CoffeeLarge$3.500
4TeaSmall$2.000
5TeaLarge$3.001
6JuiceSmall$3.000
7JuiceLarge$4.000
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

D5만 1입니다. F2나 G2를 바꾸면 1이 옮겨 갑니다. 조건이 하나 늘 때마다 *(range=value)를 하나 더 붙이면 되고, 조건이 같음일 필요도 없습니다. *(C2:C7<3)은 "가격 3 미만"을 추가합니다. 모든 범위는 같은 행(A2:A7, B2:B7, C2:C7)을 덮어야 합니다. 반환 범위의 크기가 조건과 다르면 XLOOKUP은 #VALUE!를 반환합니다.

여러 조건을 쓰는 INDEX MATCH

Excel 2019 이하에서는 MATCH가 같은 배열에서 1을 찾고, INDEX가 그 위치의 가격을 반환할 수 있습니다.

INDEX와 MATCH로 조건 두 개
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50CoffeeLarge$3.50
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

Coffee와 Large는 배열의 2번 위치이므로 INDEX는 $3.50을 반환합니다. Excel 2019 이하에서는 이것이 배열 수식입니다. Enter 대신 Ctrl+Shift+Enter(Mac에서는 Cmd+Shift+Enter)를 누르면 엑셀이 수식을 중괄호로 감싸 보여 줍니다. 그곳에서 그냥 Enter를 누르면 보통 #N/A나 #VALUE!가 나옵니다. Excel 365에서는 Enter로 충분합니다. 조건이 하나인 형태는 INDEX와 MATCH 페이지에 있습니다.

조건을 하나의 키로 합치기

다른 방법은 조건 두 개를 합쳐 하나로 만드는 것입니다. VLOOKUP은 합친 값을 표 맨 앞의 도우미 열에 두어야 합니다(그 버전은 VLOOKUP 페이지에서 보여 줍니다). XLOOKUP은 수식 안에서 범위를 합칠 수 있으므로 도우미 열이 필요 없습니다.

상품과 크기를 키 하나로 합치기
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50JuiceLarge$4.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

A2:A7&"|"&B2:B7은 Juice|Large 같은 키 여섯 개를 만들고, XLOOKUP이 그중에서 Juice|Large를 찾아 $4.00을 냅니다. 부분 사이에는 구분 기호를 넣으세요. 구분 기호가 없으면 "AB"와 "C"가 "A"와 "BC"를 합친 것과 같은 "ABC"가 되어, 조회가 엉뚱한 행을 반환할 수 있습니다.

원하는 값이 숫자이고 각 조합이 한 번씩만 나온다면, SUMIFS가 배열 없이 같은 답을 줍니다: =SUMIFS(C2:C7,A2:A7,E2,B2:B7,F2). 일치하는 값이 없으면 오류 대신 0을 반환하므로 오타가 가려질 수 있습니다.

FILTER로 일치하는 행 모두 가져오기

XLOOKUP과 INDEX MATCH는 처음으로 일치하는 행을 반환합니다. 여러 행이 일치하고 그 전부를 원한다면 같은 조건으로 FILTER를 쓰세요.

North의 Phone 주문 전체
F2
ABCDEFG
1RegionProductQuarterSalesMatches
2NorthLaptopQ1120Q1210
3NorthPhoneQ1210Q2225
4SouthLaptopQ195Q3240
5NorthPhoneQ2225
6SouthPhoneQ2180
7NorthLaptopQ2135
8NorthPhoneQ3240
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

North이면서 Phone인 행이 세 개이므로 F2가 그 분기와 매출을 F2:G4로 분산합니다. A3을 South로 바꾸면 목록이 두 개로 줄어듭니다. 일치하는 행이 없으면 FILTER는 #CALC!를 반환하며, 세 번째 인수로 "None" 같은 값을 주면 대신 텍스트를 보여 줍니다. 다른 옵션은 FILTER 페이지에 있습니다.

연습: 조건 세 개

지역, 상품, 분기별 매출
G4
ABCDEFG
1RegionProductQuarterSalesRegionSouth
2NorthLaptopQ1120ProductLaptop
3NorthLaptopQ2135QuarterQ2
4NorthPhoneQ1210Sales
5SouthLaptopQ195
6SouthPhoneQ2180
7SouthLaptopQ2110
8NorthPhoneQ2225
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: G4에 G1의 지역, G2의 상품, G3의 분기에 해당하는 매출을 반환하세요.

자주 묻는 질문

XLOOKUP을 여러 조건으로 쓰려면 어떻게 하나요?

조건마다 비교식을 하나씩 곱하고 1을 찾습니다: =XLOOKUP(1,(A2:A7=E2)*(B2:B7=F2),C2:C7). 각 비교식은 행마다 TRUE나 FALSE를 내고, 곱은 모두 TRUE인 곳에서만 1이 되며, XLOOKUP이 그런 첫 행을 반환합니다.

조건이 두 개인 INDEX MATCH는 어떻게 쓰나요?

MATCH 안에 같은 곱한 조건을 씁니다: =INDEX(C2:C7,MATCH(1,(A2:A7=E2)*(B2:B7=F2),0)). Excel 2019 이하에서는 Ctrl+Shift+Enter(Mac에서는 Cmd+Shift+Enter)로 확정하세요.

VLOOKUP에 조건을 두 개 쓸 수 있나요?

직접은 안 됩니다. 표 맨 앞에 두 값을 합치는 도우미 열(예: =A2&"|"&B2)을 추가하고, 합친 값을 조회하세요: =VLOOKUP(E2&"|"&F2,helper_table,col,FALSE).

SUMIFS로 조건 두 개짜리 조회를 대신할 수 있나요?

값이 숫자이고 각 조합이 한 번씩만 나온다면 됩니다: =SUMIFS(C2:C7,A2:A7,E2,B2:B7,F2). 일치하는 행이 없으면 #N/A 대신 0을 반환하고, 조합이 두 번 나오면 값을 더합니다.

OR 조건으로 조회하려면 어떻게 하나요?

조건을 곱하는 대신 더합니다. (A2:A7="Tea")+(A2:A7="Juice")는 둘 중 하나라도 참인 곳에서 1 이상입니다. 0보다 큰 값을 조회하세요. 예를 들어 =XLOOKUP(TRUE,((A2:A7="Tea")+(A2:A7="Juice"))>0,C2:C7)입니다.

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

Coddy로 코딩 배우기

시작하기