핵심 요약
- INDEX는 범위에서 몇 번째 값을 꺼내고, MATCH는 찾는 값이 범위에서 몇 번째에 있는지 알려 줍니다. 둘을 합치면 VLOOKUP처럼 값을 찾을 수 있습니다.
- 기본 형태는
=INDEX(가져올 범위, MATCH(찾을 값, 찾을 범위, 0))이며, MATCH의 세 번째 인수는 정확히 일치하는0을 씁니다. - 가져올 범위와 찾을 범위는 시작 행과 크기를 똑같이 맞춰야 합니다. 한 칸만 어긋나도 오류 없이 엉뚱한 값이 나옵니다.
VLOOKUP은 편리하지만 제약이 있습니다. 찾을 값이 반드시 범위의 첫 열에 있어야 하고, 기준 열보다 왼쪽에 있는 값은 가져올 수 없으며, 열 번호를 손으로 세어 넣어야 합니다. 표 중간에 열을 하나 끼워 넣으면 열 번호가 그대로 남아 다른 열의 값을 가져오기도 합니다.
INDEX와 MATCH를 조합하면 이런 제약 없이 원하는 값을 찾을 수 있습니다. 이 글에서는 두 함수를 하나씩 익힌 뒤 합치는 방법, VLOOKUP 대신 쓰면 좋은 경우, 자주 틀리는 부분까지 정리합니다.
INDEX 함수: 범위에서 N번째 값 꺼내기
INDEX는 지정한 범위 안에서 위치 번호에 해당하는 칸의 값을 돌려줍니다. 한 열이나 한 행으로 된 범위라면 인수 두 개만 쓰면 됩니다.
=INDEX(범위, 위치 번호)
| 인수 | 뜻 | 예시 |
|---|---|---|
| 범위 | 값을 꺼낼 한 열 또는 한 행 | C3:C5 |
| 위치 번호 | 범위의 첫 칸을 1로 보고 몇 번째 칸인지 | 3 |
C3:C5에는 15, 6, 9가 들어 있으므로 =INDEX(C3:C5, 3)의 결과는 9입니다. 위치 번호를 1로 바꾸면 15가 나옵니다. B2:C2처럼 가로 범위에 써도 똑같이 왼쪽부터 셉니다. INDEX만으로는 쓸모가 크지 않지만, 위치 번호를 MATCH가 계산해 주면 달라집니다.
MATCH 함수: 찾는 값이 몇 번째인지 알아내기
=MATCH(찾을 값, 찾을 범위, 일치 유형)
| 인수 | 뜻 | 예시 |
|---|---|---|
| 찾을 값 | 위치를 알고 싶은 값 | "Cookies" |
| 찾을 범위 | 값을 찾을 한 열 또는 한 행 | B3:B5 |
| 일치 유형 | 0은 정확히 일치. 1(생략 시 기본값)과 -1은 정렬된 범위에서 근삿값을 찾을 때 씁니다. | 0 |
B3:B5에서 Cookies는 세 번째 칸이므로 결과는 3입니다. MATCH가 돌려주는 값은 시트의 행 번호가 아니라 범위 안에서의 순서라는 점을 기억하세요.
일치 유형을 생략하면 기본값 1이 적용됩니다. 1은 범위가 오름차순으로 정렬되어 있다고 보고 근삿값을 찾기 때문에, 정렬되지 않은 목록에서는 오류 없이 틀린 위치가 나올 수 있습니다. 상품명·이름·코드를 찾을 때는 항상 0을 넣으세요.
INDEX와 MATCH 합치기
INDEX의 위치 번호 자리에 MATCH를 넣으면 됩니다.
=INDEX(가져올 범위, MATCH(찾을 값, 찾을 범위, 0))
월별 쿠키 생산량 표(B열 월, C열 생산량)에서 3월 생산량을 찾아보겠습니다.
- 결과를 넣을 셀을 클릭합니다.
=INDEX(C3:C7, MATCH("March", B3:B7, 0))를 입력하고 Enter를 누릅니다.- MATCH가 B3:B7에서 March의 위치 3을 구하고, INDEX가 C3:C7의 세 번째 값 37을 돌려줍니다.
같은 표에서 생산량이 67인 달을 찾고 싶다면 두 범위의 역할만 바꿉니다. =INDEX(B3:B7, MATCH(67, C3:C7, 0))의 결과는 April입니다. 기준 열보다 왼쪽 열의 값을 가져오는 것으로, VLOOKUP으로는 바로 할 수 없는 작업입니다.
가로 범위와 머리글 찾기
INDEX MATCH는 가로 범위에도 그대로 씁니다. 아래 표는 3행에 상품명, 4행에 판매량이 있습니다. 판매량이 8인 상품이 무엇인지 알고 싶을 때 다음처럼 씁니다.
=INDEX(B3:F3, MATCH(8, B4:F4, 0))은 B4:F4에서 8의 위치 3을 찾고, B3:F3의 세 번째 값인 Gummy worms를 돌려줍니다. HLOOKUP은 찾을 값이 첫 행에 있어야 하지만, INDEX MATCH는 아래 행에서 찾아 위쪽 머리글을 가져올 수 있습니다.
VLOOKUP 대신 INDEX MATCH를 쓰는 이유와 주의점
- 열 번호를 세지 않습니다. 찾을 열과 가져올 열을 직접 지정합니다.
- 열을 끼워 넣어도 안전합니다. 범위 참조가 함께 조정되므로 VLOOKUP처럼 열 번호가 어긋나지 않습니다.
- 방향 제약이 없습니다. 왼쪽·위쪽 값도 가져오고, 세로·가로 표에 같은 방식으로 씁니다.
가장 흔한 실수는 두 범위의 크기를 다르게 잡는 것입니다. 위 예시에서 =INDEX(C3:C7, MATCH("March", B2:B7, 0))처럼 찾을 범위만 머리글 행(B2)부터 잡으면 MATCH는 4를 돌려주고, INDEX는 C3:C7의 네 번째 값인 April 생산량 67을 가져옵니다. 오류 표시가 없어서 알아채기 어렵습니다.
| 결과 | 원인 | 해결 |
|---|---|---|
#N/A | 찾을 값이 찾을 범위에 없음, 공백·형식 차이 | 철자·공백·숫자 형식 확인 |
#REF! | MATCH 결과가 가져올 범위의 칸 수보다 큼 | 두 범위의 크기 맞추기 |
| 엉뚱한 값 | 두 범위의 시작 행이 다름, 일치 유형 생략 | 시작 행 통일, 세 번째 인수에 0 |
구글 스프레드시트에서는
구글 스프레드시트의 INDEX와 MATCH도 인수 순서와 동작이 엑셀과 같아 위 수식을 그대로 쓸 수 있습니다. MATCH의 일치 유형을 생략하면 1로 처리된다는 점도 같습니다. 구글 스프레드시트와 마이크로소프트 365·엑셀 2021 이후 버전에서는 XLOOKUP으로 같은 작업을 더 짧게 쓸 수 있지만, 엑셀 2019 이하와 파일을 주고받는다면 INDEX MATCH가 호환성 면에서 안전합니다.
자주 묻는 질문
MATCH는 대소문자를 구분하나요?
구분하지 않습니다. "march"와 "March"를 같은 값으로 봅니다. 같은 값이 여러 번 있으면 가장 먼저 나오는 위치를 돌려줍니다.
수식을 아래로 복사하면 결과가 틀어집니다.
범위가 함께 밀려 내려갔기 때문입니다. $C$3:$C$7, $B$3:$B$7처럼 두 범위를 모두 절대참조로 고정하고, 찾을 값만 상대참조로 두세요.
MATCH의 일치 유형 1은 언제 쓰나요?
점수 구간별 등급표처럼 기준 값이 오름차순으로 정렬된 범위에서, 찾을 값보다 작거나 같은 값 중 가장 큰 값의 위치를 찾을 때 씁니다. 예를 들어 0, 60, 80, 90이 차례로 있는 범위에서 85를 찾으면 80의 위치인 3을 돌려줍니다.
함께 보면 좋은 글: 엑셀 VLOOKUP 함수 사용법 총정리, 엑셀 HLOOKUP 함수 사용법과 VLOOKUP 차이, 엑셀 절대참조 상대참조 차이와 $ 사용법
댓글
댓글 남기기