엑셀에서 표의 값을 찾을 때 VLOOKUP을 가장 많이 씁니다. 그런데 찾으려는 키값이 첫 번째 열이 아닌 경우, 또는 열을 추가한 뒤 수식이 틀어지는 경험을 해 본 적이 있다면 INDEX와 MATCH 함수 조합이 해결책이 됩니다. 이 글에서는 두 함수의 구문과 동작 원리, 기본 조합 사용법, 다중조건 검색, 그리고 실수하기 쉬운 부분까지 다룹니다.
VLOOKUP의 한계
키값이 첫 번째 열에 없으면 VLOOKUP은 쓸 수 없다
VLOOKUP 함수의 구문은 =VLOOKUP(찾을값, 범위, 열번호, [일치옵션])입니다. 범위의 첫 번째 열에서 찾을값을 검색한 뒤, 지정한 열번호 위치의 값을 반환합니다. 이 구조 때문에 키값이 두 번째 열 이후에 있거나, 반환할 값이 키값 열의 왼쪽에 있을 경우 VLOOKUP으로는 처리할 수 없습니다.
예를 들어 A열에 상품명, B열에 단가, C열에 상품코드가 있는 표에서 상품코드로 상품명을 찾으려 하면 VLOOKUP은 동작하지 않습니다. 키값(상품코드)이 첫 번째 열이 아니고, 반환값(상품명)이 키값 열의 왼쪽에 있기 때문입니다.
열 번호 직접 입력의 문제점
VLOOKUP은 반환할 값의 열 번호를 숫자로 직접 지정합니다. 표에 열을 추가하거나 삭제하면 이 번호가 맞지 않아 수식을 일일이 수정해야 합니다. 데이터가 많거나 수식이 여러 곳에 퍼져 있다면 유지 관리가 번거로워집니다.
INDEX 함수 – 위치로 값을 찾는다
구문과 인수 설명
=INDEX(array, row_num, [col_num])
| 인수 | 설명 | 필수 여부 |
|---|---|---|
| array | 값을 찾을 범위 | 필수 |
| row_num | 반환할 값이 있는 행 번호 | 필수 |
| col_num | 반환할 값이 있는 열 번호. 단일 열 범위이면 생략 가능. | 선택 |
INDEX 함수는 지정한 범위에서 몇 번째 행, 몇 번째 열에 있는 값을 반환합니다. 범위가 단일 열이면 col_num은 생략해도 됩니다.
단독 사용 예시
B5:B11 범위의 5번째 행 값을 가져오려면 다음과 같이 입력합니다.
=INDEX(B5:B11, 5)결과로 B9 셀의 값을 반환합니다. 단독으로는 행 번호를 직접 입력해야 하기 때문에 실용성이 낮습니다. MATCH와 조합해서 행 번호를 자동으로 구하는 것이 핵심입니다.
MATCH 함수 – 값의 위치(순번)를 찾는다
구문과 인수 설명
=MATCH(찾을값, 범위, [일치옵션])
| 인수 | 설명 | 필수 여부 |
|---|---|---|
| 찾을값 | 범위에서 검색할 값 | 필수 |
| 범위 | 검색 대상 범위 (단일 행 또는 단일 열) | 필수 |
| 일치옵션 | 검색 방식 지정 (0 / 1 / -1) | 선택 |
MATCH 함수는 값 자체가 아니라 값이 범위 안에서 몇 번째에 있는지 위치 번호를 반환합니다. 이 위치 번호를 INDEX의 row_num에 넘기는 것이 두 함수 조합의 핵심입니다.
일치옵션(0 / 1 / -1) 차이
| 옵션 값 | 동작 |
|---|---|
| 0 | 정확히 일치하는 값의 위치 반환. 실무에서 가장 많이 사용. |
| 1 또는 생략 | 오름차순 정렬된 데이터에서 찾을값보다 작거나 같은 값 중 최대값의 위치 반환. |
| -1 | 내림차순 정렬된 데이터에서 찾을값보다 크거나 같은 값 중 최소값의 위치 반환. |
정확한 값을 찾을 때는 반드시 0을 입력합니다. 1이나 -1 옵션은 데이터가 정렬되어 있어야만 올바르게 동작합니다.
INDEX + MATCH 조합 – 기본 사용법
기본 공식과 실행 순서
=INDEX(출력범위, MATCH(참조값, 참조범위, 0))실행 순서는 다음과 같습니다.
- MATCH 함수가 먼저 실행되어 참조범위에서 참조값의 위치 번호를 반환합니다.
- 그 번호를 INDEX 함수의 row_num 인수로 넘깁니다.
- INDEX 함수가 출력범위의 해당 위치에서 값을 반환합니다.
VLOOKUP과 비교했을 때 출력범위와 참조범위를 독립적으로 지정하기 때문에 키값 열이 어디에 있든 조회할 수 있고, 왼쪽 방향 조회도 가능합니다.
실무 예시 – 상품코드로 상품명·단가 조회
아래와 같은 상품정보 표가 있다고 가정합니다.
| B열 (상품명) | C열 (단가) | D열 (상품코드) |
|---|---|---|
| 키보드 | 55,000 | A001 |
| 마우스 | 32,000 | A002 |
| 모니터 | 280,000 | A003 |
| 스피커 | 48,000 | A004 |
| 마우스패드 | 6,500 | A005 |
키값(상품코드)이 D열에 있고 반환값(상품명)이 B열에 있어 VLOOKUP으로는 조회할 수 없습니다.
상품코드 'A005'로 상품명을 찾는 수식:
=INDEX($B$5:$B$11, MATCH(C35, $D$5:$D$11, 0))단가를 찾는 수식 (출력범위만 C열로 변경):
=INDEX($C$5:$C$11, MATCH(C35, $D$5:$D$11, 0))출력범위와 참조범위에 절대참조($)를 붙이는 이유는 수식을 아래 셀로 복사할 때 범위가 이동하지 않도록 하기 위해서입니다. 참조값(C35)은 한 행씩 내려가야 하므로 상대참조로 그대로 둡니다.
다중조건 검색 – 두 가지 조건을 동시에 만족하는 값 찾기
다중조건 공식
단가를 연도별로 관리하는 경우처럼 두 가지 조건이 모두 맞아야 값을 찾을 수 있는 상황에서는 아래 공식을 사용합니다.
=INDEX(출력범위, MATCH(1, (조건1=조건범위1)*(조건2=조건범위2), 0))(조건1=조건범위1)은 TRUE/FALSE 배열을 반환하고, TRUE는 1, FALSE는 0으로 처리됩니다. 두 배열을 곱하면 두 조건이 모두 참인 위치만 1이 되므로, MATCH(1, ..., 0)으로 그 위치를 찾습니다.
각 조건은 반드시 괄호로 묶어야 합니다. 곱하기(*)가 같다(=) 연산보다 우선순위가 높기 때문에 괄호 없이 입력하면 비교 연산이 먼저 실행되지 않습니다.
배열수식 입력 방법 (Ctrl+Shift+Enter)
다중조건 공식은 배열수식으로 입력해야 합니다. 수식을 입력한 뒤 Enter 대신 Ctrl + Shift + Enter를 누릅니다. 정상적으로 입력되면 수식 입력줄에 중괄호가 자동으로 붙습니다.
{=INDEX(출력범위, MATCH(1, (조건1=조건범위1)*(조건2=조건범위2), 0))}중괄호는 직접 입력하는 것이 아니라 Ctrl+Shift+Enter를 눌러야 자동으로 생성됩니다. Microsoft 365 버전에서는 배열수식 없이 일반 Enter로도 동작하는 경우가 있습니다.
자주 하는 실수와 주의사항
셀 서식 문제
숫자를 찾을 때 셀 서식이 텍스트로 설정되어 있으면 MATCH가 값을 찾지 못해 #N/A 오류가 발생합니다. 특히 다른 프로그램(한글 문서, 웹 페이지 등)에서 복사한 데이터는 숫자처럼 보여도 텍스트로 저장된 경우가 있습니다. 셀을 선택한 뒤 홈 탭의 숫자 서식이 '숫자'로 설정되어 있는지 확인합니다.
절대참조 누락
수식을 다른 셀로 복사할 때 출력범위나 참조범위가 함께 이동하면 엉뚱한 결과가 나옵니다. 범위에는 $ 기호로 절대참조를 적용하고, 찾는 값(참조값)에는 상대참조를 유지합니다. F4 키를 눌러 절대참조로 전환할 수 있습니다.
다중조건에서 배열수식 미적용
다중조건 공식을 일반 Enter로 입력하면 결과가 #VALUE! 또는 #N/A로 나옵니다. 반드시 Ctrl+Shift+Enter로 입력해야 합니다. 수식 입력줄에 중괄호({})가 표시되는지 확인하면 됩니다.
Excel 버전 참고
INDEX+MATCH는 Excel 2007 이상 모든 버전에서 동작합니다. Excel 2021 또는 Microsoft 365를 사용한다면 XLOOKUP 함수로 왼쪽 조회와 다중조건을 더 간결하게 처리할 수도 있습니다.
INDEX와 MATCH 함수는 개별로는 단순하지만 조합하면 VLOOKUP으로 해결하지 못하는 조회 작업을 처리할 수 있습니다. 키값 위치 제약이 없고 열을 추가하거나 삭제해도 수식이 유지된다는 점에서 실무 데이터를 다룰 때 활용 범위가 넓습니다.
'엑셀' 카테고리의 다른 글
| 엑셀 VLOOKUP 함수 사용법 – 구문, 예시, 오류 해결까지 (0) | 2026.07.03 |
|---|---|
| 엑셀 SUMIF / SUMIFS 함수 사용법 – 조건부 합계 기초부터 다중 조건까지 (0) | 2026.07.02 |
| 엑셀 HLOOKUP 함수 사용법 – 가로 방향 조회의 구문과 실전 예시 (0) | 2026.06.29 |
| 엑셀 VLOOKUP 함수 사용법 – 구문부터 오류 해결까지 (0) | 2026.06.26 |
| 엑셀 XLOOKUP 함수 사용법 – 구문, 인수, 실전 예시까지 (0) | 2026.06.25 |