목차▾
엑셀 INDEX 함수란?
엑셀 INDEX 함수는 범위에서 행·열 좌표로 값을 꺼내는 검색·참조 함수입니다. 단독으로도 쓰지만, MATCH와 조합한 INDEX/MATCH 콤보가 VLOOKUP의 한계를 넘는 표준 패턴으로 가장 자주 사용됩니다. 양방향 조회, 왼쪽 열 검색, 동적 범위 정의 등에 강력합니다.
구문은 =INDEX(범위, 행번호, [열번호]) 3인수 (배열형). 참조형에는 area_num이 추가로. row_num·column_num은 1부터 (0은 "전체 행/열" 의미). Excel 2003 이전부터 모든 버전에서 지원.
INDEX/MATCH = VLOOKUP 대체 표준
VLOOKUP (제약):
=VLOOKUP("애플", A:C, 3, FALSE)
→ A열에서 검색 → C열 반환. 검색 열이 첫 열에 있어야 함
INDEX/MATCH (유연):
=INDEX(C:C, MATCH("애플", B:B, 0))
→ B열에서 검색 → C열 반환. 어느 열에서든 검색 가능
→ 양방향 검색·동적 열 선택·왼쪽 검색 모두 가능. VLOOKUP의 한계 우회.
row_num = 0 → 행/열 전체 + 오류
row_num을 0으로 지정하면 열 전체 반환:
=INDEX(A1:C10, 0, 2) → B1:B10 전체 (2번째 열)
=INDEX(A1:C10, 3, 0) → A3:C3 전체 (3번째 행)
SUM·AVERAGE 등 집계와 조합해서 동적 범위:
=SUM(INDEX(A1:C10, 0, MATCH("3월", A1:C1, 0)))
→ 헤더가 "3월"인 열 전체 합계
처리하는 오류 4가지
| 오류 코드 | 풀이 | 발생 원인 |
|---|---|---|
| #REF! | 참조 오류 (Reference) | row_num/column_num이 범위 초과 |
| #VALUE! | 값 유형 오류 | row_num/column_num이 숫자가 아님 |
| #NAME? | 이름 오류 | 잘못된 범위명 |
| 0 | 빈 셀 반환 | 범위 내 빈 셀 (오류 아님, 주의) |
INDEX vs VLOOKUP/XLOOKUP/OFFSET
| 함수 | 검색 방향 | 동적 | 권장 시점 |
|---|---|---|---|
| INDEX/MATCH | 양방향 | ✅ | 모든 버전·유연성 |
| VLOOKUP | 세로 (첫 열만) | ❌ | 단순 룩업 |
| XLOOKUP | 양방향 | ✅ | Excel 365·2021+ |
| OFFSET | 좌표 + 크기 | ✅ | 동적 범위 (휘발성) |
→ Excel 365 이전은 INDEX/MATCH, 2021+는 XLOOKUP. OFFSET은 휘발성(volatile)이라 큰 시트에서 성능 저하.
실전 사용 시나리오 8가지
- 좌표 직접 조회 —
=INDEX(A1:C10, 3, 2)→ 3행 2열 = B3 - INDEX/MATCH 표준 —
=INDEX(C:C, MATCH("애플", B:B, 0)) - 양방향 조회 (2차원) —
=INDEX(B2:D10, MATCH(찾을행, A2:A10, 0), MATCH(찾을열, B1:D1, 0)) - 동적 열 합계 —
=SUM(INDEX(A2:E100, 0, MATCH("3월", A1:E1, 0))) - 마지막 값 추출 —
=INDEX(A:A, COUNTA(A:A)) - N번째 셀 —
=INDEX(A1:A100, 7)→ A7 - 다중 시트 (area_num) —
=INDEX((Sheet1!A1:C10, Sheet2!A1:C10), 3, 2, 2) - 동적 범위 정의 —
=SUM(A1:INDEX(A:A, COUNTA(A:A)))
자주 발생하는 함정 6가지
- row_num/column_num 1부터 — 0은 "전체 행/열". 첫 셀은 1, 1
- 범위 초과 → #REF! —
INDEX(A1:C10, 11, 2)→ 10행 넘으면#REF!(참조 오류). MATCH로 동적 검색 시 IFERROR 권장 - column_num 생략 vs 0 — 1차원 범위는 생략 OK. 2차원 범위는 생략 시 첫 열 또는 #REF! (버전·맥락 따라)
- INDEX는 비휘발성, OFFSET은 휘발성 — INDEX는 의존성 변경 시만 재계산. OFFSET은 매번 → 성능 저하. 동적 범위는 INDEX 권장
- MATCH 3번째 인수 0 명시 — 0=정확 일치 (정렬 필요 없음, 가장 안전). 1·-1은 정렬 전제
- 빈 셀은 0 반환 — 빈 셀 자리는 0 (오류 아님). 텍스트 필요하면 IF + ISBLANK
자주 묻는 질문
Q. INDEX 함수 사용법은?
=INDEX(범위, 행번호, [열번호]) 형식. 예: =INDEX(A1:C10, 3, 2) → 3행 2열 셀 값. row_num·column_num은 1부터.
Q. INDEX/MATCH 콤보가 VLOOKUP보다 좋은가요?
유연성 압승. VLOOKUP은 첫 열에서만 검색·반환 열은 오른쪽만 가능. INDEX/MATCH는 어느 열에서든 검색·왼쪽 열 반환·양방향 조회. =INDEX(C:C, MATCH("애플", B:B, 0))이 표준 패턴.
Q. row_num에 0을 넣으면?
열 전체 반환. =INDEX(A1:C10, 0, 2) → B1:B10. column_num에 0도 마찬가지로 행 전체. SUM·AVERAGE와 조합해서 동적 범위 만들 때 활용.
Q. INDEX와 OFFSET 중 뭐가 좋나요?
INDEX 권장. OFFSET은 휘발성(volatile)이라 시트 어디든 변경되면 매번 재계산 → 큰 시트에서 성능 저하. INDEX는 의존성 변경 시만 재계산.
Q. #REF! 오류는 왜?
row_num이나 column_num이 범위를 초과. INDEX(A1:C10, 11, 2) → 10행을 넘으면 #REF!(참조 오류). MATCH로 검색 시 IFERROR로 감싸기.
Q. INDEX vs XLOOKUP?
Excel 365·2021+이면 XLOOKUP 권장 (가독성 좋음). 구버전 호환이면 INDEX/MATCH. XLOOKUP은 INDEX/MATCH의 모던 대체로 디자인됨.
Q. INDEX로 마지막 값 추출하려면?
=INDEX(A:A, COUNTA(A:A)). COUNTA가 비어있지 않은 셀 수 반환 → 그 번호 행이 마지막. 빈 셀이 중간에 있으면 부정확하므로 LOOKUP(2,1/(A:A<>""),A:A) 같은 패턴도.
Q. 구글 스프레드시트에서도 동일하게 작동하나요?
네. INDEX는 표준 검색·참조 함수로 Google Sheets, LibreOffice Calc, Apple Numbers, 한컴 한셀, WPS에서 동일하게 작동합니다.
본 페이지는 Microsoft Support 공식 INDEX·MATCH·VLOOKUP·OFFSET 문서를 기준으로 작성되었습니다. 정확한 동작은 Excel 버전·환경에 따라 달라질 수 있으니 중요한 작업 전에는 실제 환경에서 확인하세요.