
Excel INDEX MATCH 함수 제대로 쓰는 법 (실무형 완전 가이드)
엑셀에서 Excel INDEX MATCH를 “진짜로” 쓰려면, 문법을 외우는 것보다 안 깨지는 구조(테이블/참조/정확히일치)를 먼저 잡아야 합니다. VLOOKUP이 편하긴 하지만, 열 추가/삭제 한 번에 보고서가 무너지는 경험을 했다면 이제부터는 INDEX+MATCH 조합이 훨씬 안정적입니다.
Quick Fix: 3분 만에 Excel INDEX MATCH 첫 성공 만들기
- 반환할 열(결과 범위)을 먼저 고른다
- 찾을 값(키)을 정한다
- MATCH로 “몇 번째인지(위치)”를 구한다:
=MATCH(찾을값, 키범위, 0) - INDEX로 그 위치의 값을 꺼낸다:
=INDEX(반환범위, MATCH(찾을값, 키범위, 0))
왜 INDEX MATCH가 실무에서 더 안 깨지나
- VLOOKUP처럼 “열 번호”를 세지 않아 열 삽입/삭제에 더 안전
- 왼쪽 조회가 가능
- 2차원(행+열) 조회가 깔끔
- 다중조건/최근값 등 고급 조회로 확장 쉬움
실무 예제 준비: 샘플 데이터
PriceList (마스터)
| ItemCode | ItemName | Category | Price |
|---|---|---|---|
| T001 | T-shirt | Basic | 19000 |
| T002 | Polo | Plus | 25000 |
| B014 | Pants | Basic | 35000 |
| O010 | Jacket | Pro | 159000 |
| S201 | Shoes | Pro | 140000 |
Orders (주문)
| OrderID | ItemCode | Qty |
|---|---|---|
| O-1001 | T002 | 3 |
| O-1002 | S201 | 1 |
| O-1003 | T001 | 2 |
추천 세팅: 범위 선택 → 삽입(Insert) > 표(Table) → “머리글 포함” 체크 → 테이블 이름을 PriceList, Orders로 지정.
실무 예제 1: 정확히 일치(0)로 가격 조회
Orders에서 ItemCode로 PriceList의 Price를 가져오기:
=INDEX(PriceList[Price], MATCH([@ItemCode], PriceList[ItemCode], 0))
금액(Amount):
=[@Qty] * [@UnitPrice]
실무 예제 3: 2차원(행+열) 조회
행 키(ItemCode) + 열 키(월 헤더)를 각각 MATCH로 찾은 뒤 INDEX에 넣습니다.
=INDEX(MonthlySales,
MATCH(B2, MonthlySales[ItemCode], 0),
MATCH(C2, MonthlySales[#Headers], 0)
)
실무 예제 4: 다중 조건 조회
=INDEX(Sales[Price],
MATCH(1, (Sales[Branch]=E2)*(Sales[ItemCode]=F2), 0)
)
Troubleshooting
| 증상 | 원인(추정) | 해결 |
|---|---|---|
| #N/A | 키가 없음/공백·형식 불일치 | TRIM/CLEAN, 숫자↔텍스트 통일, 키 존재 확인 |
| 엉뚱한 값(근사값) | MATCH 1/-1인데 정렬 안 됨 | 정렬 조건 확인, 가능하면 0 사용 |
| #VALUE! | 배열 수식 입력/호환 문제 | 구버전이면 Ctrl+Shift+Enter 필요 케이스 점검 |
관련 글(내부 링크)
- XLOOKUP vs VLOOKUP 비교
- VLOOKUP 다중조건 패턴
- VLOOKUP IFERROR로 #N/A 처리
- IF 함수 한계(LET 최적화 포함)
- INDEX/MATCH 고급(2차원·다중조건·최근값)
외부 참고(공식 문서)
- Microsoft: INDEX function
- Microsoft: MATCH function
- Microsoft: Look up values with VLOOKUP, INDEX, or MATCH