본문 바로가기

엑셀

엑셀 INDEX MATCH 함수 조합 사용법 - VLOOKUP보다 유연한 검색

반응형

VLOOKUP은 편리하지만 제약이 있어요.
찾을 값이 반드시 범위의 첫 번째 열에 있어야 하고, 오른쪽 방향만 검색 가능하죠.

 

INDEX+MATCH 조합은 이런 제약 없이 어떤 방향으로든 값을 찾을 수 있어요.
XLOOKUP을 사용할 수 없는 Excel 2019 이하 환경에서 특히 유용합니다.

 

이 글에서는 INDEX와 MATCH 각각의 역할, 조합 방법, VLOOKUP과의 비교, 실무 예제를 다룹니다.

MATCH 함수 - 위치 찾기

=MATCH(찾을값, 찾을범위, 일치유형)

 

MATCH는 값이 범위에서 몇 번째에 있는지 "위치(순번)"를 반환하는 함수예요.
값 자체를 가져오는 게 아니라, 위치만 알려줍니다.

 

인수 설명
찾을값 검색할 값
찾을범위 검색 대상 범위 (1열 또는 1행)
일치유형 0=정확히 일치, 1=이하, -1=이상

 

실무에서는 거의 항상 일치유형을 0(정확히 일치)으로 사용해요.

 

예시:

  A
2 사과
3 바나나
4 포도
5 딸기
=MATCH("포도",A2:A5,0)

결과: 3 (A2:A5 범위에서 "포도"는 3번째)

 

MATCH는 단독으로는 잘 사용하지 않아요.
INDEX 함수와 함께 써야 실질적인 데이터를 가져올 수 있습니다.

INDEX 함수 - 위치로 값 가져오기

=INDEX(범위, 행번호, [열번호])

 

INDEX는 범위에서 지정한 행번호(와 열번호)에 해당하는 값을 반환해요.

 

인수 설명
범위 값을 가져올 범위
행번호 범위에서 몇 번째 행
열번호 (선택) 범위에서 몇 번째 열

 

예시:

  A B
2 사과 1,200
3 바나나 2,500
4 포도 3,800
5 딸기 4,000
=INDEX(B2:B5,3)

결과: 3800 (B2:B5 범위의 3번째 값)

 

INDEX도 단독으로 쓰면 행번호를 직접 입력해야 해서 불편해요.
MATCH가 위치를 자동으로 알려주면 INDEX가 그 위치의 값을 가져오는 구조로 조합합니다.

INDEX + MATCH 조합

=INDEX(반환범위, MATCH(찾을값, 찾을범위, 0))

 

동작 순서는 이래요.

  1. MATCH가 찾을값의 위치(행번호)를 구함
  2. INDEX가 그 행번호에 해당하는 값을 반환범위에서 가져옴

 

위 예시 데이터에서 "포도"의 가격을 찾으려면:

=INDEX(B2:B5, MATCH("포도",A2:A5,0))

 

풀어보면:

  • MATCH("포도",A2:A5,0) → 3
  • INDEX(B2:B5, 3) → 3800

결과: 3800

실무 예제 1 - 제품코드로 정보 조회

데이터 (A2:D7):

  A B C D
2 P001 무선마우스 IT기기 25,000
3 P002 키보드 IT기기 45,000
4 P003 모니터암 가구 38,000
5 P004 USB허브 IT기기 12,000
6 P005 웹캠 IT기기 55,000
7 P006 책상매트 가구 18,000

 

제품코드 "P003"의 단가를 찾으려면:

=INDEX(D2:D7, MATCH("P003",A2:A7,0))

결과: 38000

 

제품명을 찾으려면 반환범위만 바꾸면 돼요:

=INDEX(B2:B7, MATCH("P003",A2:A7,0))

결과: 모니터암

실무 예제 2 - 왼쪽 방향 검색 (VLOOKUP 불가)

제품명으로 제품코드를 찾는 역방향 검색이에요.
VLOOKUP으로는 불가능하지만 INDEX+MATCH로는 가능합니다.

 

=INDEX(A2:A7, MATCH("웹캠",B2:B7,0))

결과: P005

 

찾을범위(B열)와 반환범위(A열)가 어디에 있든 상관없어요.
두 범위의 행 수만 같으면 됩니다.

실무 예제 3 - 행과 열 모두 검색 (교차 조회)

분기별 부서 매출표에서 특정 부서의 특정 분기 값을 찾는 예제입니다.

  A B C D E
1   Q1 Q2 Q3 Q4
2 영업팀 450 380 520 490
3 개발팀 200 250 180 220
4 기획팀 150 170 160 190

 

"개발팀"의 "Q3" 매출을 찾으려면:

=INDEX(B2:E4, MATCH("개발팀",A2:A4,0), MATCH("Q3",B1:E1,0))

 

풀어보면:

  • MATCH("개발팀",A2:A4,0) → 2 (2번째 행)
  • MATCH("Q3",B1:E1,0) → 3 (3번째 열)
  • INDEX(B2:E4, 2, 3) → 180

결과: 180

 

이처럼 INDEX에 열번호 인수까지 사용하면 2차원 교차 조회가 가능해요.

VLOOKUP vs INDEX+MATCH 비교

항목 VLOOKUP INDEX+MATCH
검색 방향 오른쪽만 양방향
열 삽입/삭제 영향 열번호 틀어질 수 있음 영향 없음
교차 조회 불가 가능 (행+열 MATCH)
수식 길이 짧음 상대적으로 김
학습 난이도 쉬움 약간 높음
사용 가능 버전 모든 버전 모든 버전

 

VLOOKUP이 간단한 작업에는 더 편리해요.
하지만 왼쪽 방향 검색이 필요하거나, 열 구조가 자주 바뀌는 시트에서는 INDEX+MATCH가 안정적입니다.

 

Excel 2021 이상이라면 XLOOKUP(5편 참고)이 두 조합의 장점을 모두 갖추고 있어서 가장 편합니다.

자주 하는 실수 / 주의사항

1. 찾을범위와 반환범위의 행 수 불일치

MATCH의 찾을범위와 INDEX의 반환범위 행 수가 다르면 잘못된 값이 반환돼요.
두 범위의 시작 행과 끝 행을 맞춰주세요.

 

잘못된 예: =INDEX(B2:B7, MATCH("P003",A2:A8,0))  → 범위 크기 불일치
올바른 예: =INDEX(B2:B7, MATCH("P003",A2:A7,0))  → 둘 다 6행

2. MATCH의 일치유형 0을 빠뜨리는 경우

MATCH의 세 번째 인수를 생략하면 기본값이 1(이하 검색)이에요.
정확히 일치하는 값을 찾으려면 반드시 0을 넣어야 합니다.

 

=MATCH("P003",A2:A7)      → 일치유형 1 (유사일치, 의도와 다를 수 있음)
=MATCH("P003",A2:A7,0)    → 정확히 일치

3. #N/A 오류 처리

찾을 값이 범위에 없으면 MATCH가 #N/A를 반환하고, INDEX도 오류가 나요.
IFERROR로 감싸서 처리합니다.

 

=IFERROR(INDEX(B2:B7, MATCH(G2,A2:A7,0)), "해당 없음")

관련 함수 안내

INDEX+MATCH는 SUMPRODUCT 함수와 조합하면 다중 조건 검색도 가능해요.
다만 수식이 복잡해지므로, 다중 조건이 필요하다면 Excel 2021 이상에서 XLOOKUP이나 FILTER 함수를 사용하는 것이 더 간편합니다.

 

다음 글에서는 엑셀 데이터 유효성 검사를 다룰 예정이에요.
드롭다운 목록 만들기, 입력값 제한 등 데이터 입력 오류를 방지하는 기능입니다.

반응형