
INDEX MATCH 다중조건 검색은 엑셀과 구글 스프레드시트에서 날짜, 상품명, 담당자, 지점, 컬럼명처럼 여러 조건을 동시에 만족하는 값을 찾을 때 사용하는 대표적인 실무 수식입니다. 이 글에서는 INDEX MATCH 함수 사용법부터 엑셀 다중조건 검색, 구글 스프레드시트 INDEX MATCH 활용 예제까지 단계별로 정리합니다.
- INDEX: 지정한 행·열 위치의 값을 가져오는 함수
- MATCH: 찾는 값이 범위에서 몇 번째 위치인지 찾는 함수
- 다중조건 핵심: 조건식을 곱해 모두 TRUE인 행만
1로 만든 뒤MATCH(1,...)로 찾기 - 행·열 동시 검색: 날짜는 행 기준, 컬럼명은 열 기준으로 찾아 값을 가져올 수 있음
- 구글 스프레드시트에서도 기본 구조는 동일하게 활용 가능
=INDEX(결과범위, MATCH(1, (조건1)*(조건2), 0)) 입니다.INDEX MATCH 함수로 다중조건 검색하는 방법
엑셀이나 구글 스프레드시트에서 데이터를 관리하다 보면 단순히 하나의 조건만으로 값을 찾기 어려운 경우가 많습니다. 예를 들어 “6월 9일의 A상품 매출”, “특정 지점의 특정 날짜 실적”, “담당자와 상품명이 모두 일치하는 판매금액”처럼 두 개 이상의 조건을 동시에 만족하는 값을 찾아야 하는 상황이 자주 발생합니다.
이때 가장 많이 활용되는 조합이 바로 INDEX MATCH 함수입니다. 특히 INDEX와 MATCH를 함께 사용하면 VLOOKUP보다 유연하게 데이터를 찾을 수 있고, 행과 열이 바뀌어도 비교적 안정적으로 수식을 구성할 수 있습니다.
결론부터 말하면, 조건에 맞는 값 하나를 정확히 가져와야 할 때는 INDEX MATCH가 유리하고, 조건에 맞는 여러 행을 모두 나열해야 할 때는 FILTER 함수가 더 편리합니다. 특히 날짜, 상품명, 담당자, 지점처럼 여러 조건을 조합해 요약표를 자동화할 때 INDEX MATCH 다중조건 수식이 매우 유용합니다.
이번 글에서는 INDEX MATCH 함수의 기본 개념부터 다중조건 검색 방법, 날짜와 컬럼명을 함께 기준으로 값을 가져오는 실무 예제까지 단계별로 정리해보겠습니다.
1. INDEX MATCH 함수란?
INDEX MATCH는 하나의 함수가 아니라, INDEX 함수와 MATCH 함수를 결합한 검색 방식입니다.
간단히 말하면 다음과 같습니다.
- MATCH 함수: 찾는 값이 범위 안에서 몇 번째 위치에 있는지 찾음
- INDEX 함수: 특정 범위에서 지정한 행 번호와 열 번호에 해당하는 값을 가져옴
즉, MATCH 함수로 “몇 번째 행인지”, “몇 번째 열인지”를 찾고, INDEX 함수가 그 위치에 있는 실제 값을 반환하는 구조입니다.
기본 구조는 다음과 같습니다.
=INDEX(값을_가져올_범위, MATCH(행_조건, 행_기준범위, 0), MATCH(열_조건, 열_기준범위, 0))
여기서 마지막의 0은 정확히 일치하는 값만 찾겠다는 의미입니다. 실무에서는 대부분 정확한 상품명, 날짜, 코드, 담당자명을 기준으로 찾기 때문에 0을 사용하는 경우가 많습니다.
2. INDEX MATCH를 사용하는 이유
엑셀이나 구글 스프레드시트에서 값을 찾을 때 VLOOKUP을 많이 사용합니다. 하지만 VLOOKUP은 구조적으로 몇 가지 한계가 있습니다.
| 구분 | VLOOKUP | INDEX MATCH |
| 검색 방향 | 기본적으로 왼쪽에서 오른쪽 | 왼쪽, 오른쪽 모두 가능 |
| 열 번호 지정 | 숫자로 직접 입력 | MATCH로 자동 탐색 가능 |
| 열 추가/삭제 영향 | 비교적 큼 | 상대적으로 안정적 |
| 행·열 동시 검색 | 불편함 | 유리함 |
| 다중조건 검색 | 복잡함 | 응용 가능 |
특히 실무에서는 표 구조가 자주 바뀝니다. 중간에 열이 추가되거나 컬럼 순서가 변경되는 일이 많습니다. 이때 VLOOKUP은 열 번호를 직접 입력해야 하기 때문에 수식 오류가 발생하기 쉽습니다.
반면 INDEX MATCH는 컬럼명을 기준으로 열 위치를 찾을 수 있기 때문에, 표의 구조가 조금 바뀌어도 더 유연하게 대응할 수 있습니다.
3. 기본 예제: 날짜와 컬럼명을 기준으로 값 가져오기
먼저 가장 실무적인 예제를 보겠습니다. 아래와 같은 원본 데이터가 있다고 가정해보겠습니다.
| 날짜 | A | B | C | F |
| 6/9 | 10 | 11 | 12 | 11 |
| 6/10 | 50 | 60 | 70 | 60 |
| 6/11 | 100 | 200 | 300 | 200 |
그리고 왼쪽에 다음과 같은 조회표를 만들었다고 가정합니다.
| 날짜 | A | F |
| 6/9 | ||
| 6/10 | ||
| 6/11 |
이때 6/9의 A값, 6/9의 F값, 6/10의 A값처럼 날짜와 컬럼명을 동시에 기준으로 값을 가져오고 싶을 때 INDEX MATCH를 사용할 수 있습니다.
예를 들어 원본 데이터가 다음 범위에 있다고 하겠습니다.
- 원본 날짜 범위:
G2:G4 - 원본 컬럼명 범위:
H1:K1 - 원본 값 범위:
H2:K4 - 조회 날짜:
A2 - 조회 컬럼명:
B1
B2 셀에는 아래 수식을 입력합니다.
=INDEX($H$2:$K$4, MATCH($A2, $G$2:$G$4, 0), MATCH(B$1, $H$1:$K$1, 0))
이 수식은 다음과 같이 작동합니다.
MATCH($A2, $G$2:$G$4, 0)
먼저 A2에 있는 날짜가 원본 날짜 범위에서 몇 번째 행에 있는지 찾습니다. 예를 들어 A2가 6/9라면 원본 날짜 범위 G2:G4에서 첫 번째에 있으므로 결과는 1입니다.
MATCH(B$1, $H$1:$K$1, 0)
다음으로 B1에 있는 컬럼명, 예를 들어 A가 원본 컬럼명 범위에서 몇 번째 열에 있는지 찾습니다. 원본 컬럼이 A, B, C, F 순서라면 A는 첫 번째 열이므로 결과는 1입니다.
마지막으로 INDEX 함수가 원본 값 범위에서 1행 1열에 해당하는 값을 가져옵니다.
=INDEX($H$2:$K$4, 1, 1)
따라서 결과는 10이 됩니다.
4. 수식에서 달러 기호($)가 중요한 이유
INDEX MATCH 수식을 사용할 때는 절대참조와 상대참조를 정확히 이해하는 것이 중요합니다.
앞에서 사용한 수식은 다음과 같습니다.
=INDEX($H$2:$K$4, MATCH($A2, $G$2:$G$4, 0), MATCH(B$1, $H$1:$K$1, 0))
여기서 $ 기호는 수식을 복사할 때 참조 범위가 움직이지 않도록 고정하는 역할을 합니다.
| 참조 방식 | 의미 |
$H$2:$K$4 |
원본 값 범위를 고정 |
$A2 |
A열은 고정하고, 행 번호는 아래로 복사되며 변경 |
$G$2:$G$4 |
원본 날짜 범위를 고정 |
B$1 |
열은 오른쪽으로 복사되며 변경, 1행은 고정 |
$H$1:$K$1 |
원본 컬럼명 범위를 고정 |
즉, 이 수식은 B2에 입력한 뒤 오른쪽과 아래로 복사해도 정상적으로 작동하도록 설계된 수식입니다.
예를 들어 B2에서 C2로 복사하면 B$1이 C$1로 바뀌면서 C열의 제목을 기준으로 값을 찾습니다. 또 B2에서 B3으로 복사하면 $A2가 $A3으로 바뀌면서 다음 날짜를 기준으로 값을 찾습니다.
이처럼 절대참조와 상대참조를 적절히 섞어야 INDEX MATCH 수식을 효율적으로 확장할 수 있습니다.
5. 다중조건 검색 예제 1: 날짜 + 상품명 기준으로 매출 찾기
이번에는 세로형 데이터에서 다중조건으로 값을 찾는 예제를 보겠습니다.
| 날짜 | 상품명 | 매출 |
| 6/9 | A상품 | 100,000 |
| 6/9 | B상품 | 150,000 |
| 6/10 | A상품 | 120,000 |
| 6/10 | B상품 | 180,000 |
여기서 “6/10의 B상품 매출”을 찾고 싶다면 조건은 2개입니다.
- 조건 1: 날짜 = 6/10
- 조건 2: 상품명 = B상품
이 경우 다음과 같은 수식을 사용할 수 있습니다.
=INDEX($C$2:$C$5, MATCH(1, ($A$2:$A$5=E2)*($B$2:$B$5=F2), 0))
각 범위의 의미는 다음과 같습니다.
| 범위/수식 | 의미 |
$C$2:$C$5 |
가져올 값, 즉 매출 범위 |
$A$2:$A$5=E2 |
날짜 조건 |
$B$2:$B$5=F2 |
상품명 조건 |
MATCH(1, ..., 0) |
두 조건이 모두 참인 행을 찾음 |
이 수식의 핵심은 조건을 곱하는 부분입니다.
($A$2:$A$5=E2)*($B$2:$B$5=F2)
엑셀과 구글 스프레드시트에서는 조건 결과가 TRUE/FALSE로 계산됩니다. 이를 곱하면 다음과 같은 의미가 됩니다.
| 날짜 조건 | 상품 조건 | 곱셈 결과 |
| TRUE | TRUE | 1 |
| TRUE | FALSE | 0 |
| FALSE | TRUE | 0 |
| FALSE | FALSE | 0 |
따라서 두 조건을 모두 만족하는 행만 1이 됩니다. MATCH 함수는 그 1이 처음 나오는 위치를 찾고, INDEX 함수는 해당 위치의 매출 값을 반환합니다.
6. 다중조건 검색 예제 2: 지점 + 담당자 + 상품명 기준으로 값 찾기
조건이 3개 이상이어도 원리는 같습니다.
| 지점 | 담당자 | 상품명 | 판매금액 |
| 서울 | 김민수 | A상품 | 300,000 |
| 서울 | 이지은 | B상품 | 450,000 |
| 부산 | 김민수 | A상품 | 280,000 |
| 부산 | 이지은 | B상품 | 500,000 |
여기서 “부산 지점의 이지은 담당자가 판매한 B상품의 판매금액”을 찾는다고 하겠습니다.
- 조건 1: 지점 = 부산
- 조건 2: 담당자 = 이지은
- 조건 3: 상품명 = B상품
수식은 다음과 같습니다.
=INDEX($D$2:$D$5, MATCH(1, ($A$2:$A$5=F2)*($B$2:$B$5=G2)*($C$2:$C$5=H2), 0))
조건이 2개일 때와 달라진 점은 조건식이 하나 더 추가되었다는 것입니다.
($A$2:$A$5=F2)*($B$2:$B$5=G2)*($C$2:$C$5=H2)
모든 조건이 TRUE인 행만 결과가 1이 되므로, 정확히 일치하는 판매금액을 가져올 수 있습니다.
7. 엑셀과 구글 스프레드시트에서 수식 차이가 있을까?
INDEX MATCH의 기본 구조는 엑셀과 구글 스프레드시트에서 거의 동일하게 사용할 수 있습니다.
예를 들어 아래 수식은 엑셀과 구글 스프레드시트 모두에서 사용할 수 있습니다.
=INDEX($H$2:$K$4, MATCH($A2, $G$2:$G$4, 0), MATCH(B$1, $H$1:$K$1, 0))
다만 일부 환경에서는 쉼표 , 대신 세미콜론 ;을 사용해야 할 수 있습니다. 이는 프로그램 차이라기보다는 지역 설정 차이에 가깝습니다. 쉼표 버전에서 오류가 난다면 다음처럼 바꿔볼 수 있습니다.
=INDEX($H$2:$K$4; MATCH($A2; $G$2:$G$4; 0); MATCH(B$1; $H$1:$K$1; 0))
또한 구버전 엑셀에서는 배열 수식을 입력할 때 Ctrl + Shift + Enter가 필요할 수 있습니다. 반면 최신 Excel 365나 구글 스프레드시트에서는 동적 배열 기능이 개선되어 일반 입력만으로 작동하는 경우가 많습니다.
8. 오류가 날 때 확인해야 할 부분
INDEX MATCH 다중조건 수식을 작성하다 보면 #N/A, #VALUE!, #REF! 같은 오류가 발생할 수 있습니다. 가장 자주 발생하는 원인은 다음과 같습니다.
1) 찾는 값이 실제로 존재하지 않는 경우
조건에 맞는 값이 없으면 MATCH 함수가 위치를 찾을 수 없기 때문에 #N/A 오류가 발생합니다. 이때는 IFERROR 함수를 함께 사용하면 보기 좋게 처리할 수 있습니다.
=IFERROR(INDEX($C$2:$C$5, MATCH(1, ($A$2:$A$5=E2)*($B$2:$B$5=F2), 0)), "")
위 수식은 조건에 맞는 값이 없을 때 빈칸을 표시합니다. 빈칸 대신 “없음”이라고 표시하고 싶다면 다음처럼 작성할 수 있습니다.
=IFERROR(INDEX($C$2:$C$5, MATCH(1, ($A$2:$A$5=E2)*($B$2:$B$5=F2), 0)), "없음")
2) 날짜 형식이 서로 다른 경우
겉으로는 둘 다 6/9처럼 보여도 하나는 실제 날짜값이고, 다른 하나는 텍스트일 수 있습니다. 이 경우 정확히 일치하지 않아 검색이 실패할 수 있습니다. 날짜 기준으로 검색할 때는 양쪽 셀의 형식이 모두 날짜인지 확인하는 것이 좋습니다.
3) 공백이 섞여 있는 경우
상품명이나 담당자명 뒤에 보이지 않는 공백이 들어가 있으면 값이 같아 보여도 다른 값으로 인식될 수 있습니다. 예를 들어 A상품과 A상품 은 서로 다른 값입니다. 이럴 때는 TRIM 함수를 활용해 공백을 정리할 수 있습니다.
=TRIM(A2)
4) 범위 크기가 서로 다른 경우
다중조건 수식에서는 조건 범위들의 행 개수가 모두 같아야 합니다. 예를 들어 다음 수식은 문제가 생길 수 있습니다.
=INDEX($C$2:$C$10, MATCH(1, ($A$2:$A$10=E2)*($B$2:$B$8=F2), 0))
날짜 조건 범위는 A2:A10인데, 상품명 조건 범위는 B2:B8입니다. 이처럼 범위 크기가 다르면 오류가 발생할 가능성이 높습니다. 올바르게 작성하려면 범위 크기를 맞춰야 합니다.
=INDEX($C$2:$C$10, MATCH(1, ($A$2:$A$10=E2)*($B$2:$B$10=F2), 0))
9. INDEX MATCH 다중조건 검색 실무 활용 사례
INDEX MATCH 다중조건 검색은 단순한 예제보다 실제 업무에서 더 유용합니다.
| 업무 상황 | 검색 조건 | 가져올 값 |
| 매출 관리 | 날짜 + 상품명 | 매출액 |
| 광고 성과 분석 | 캠페인명 + 일자 | 전환수 또는 비용 |
| 재고 관리 | 창고명 + 상품코드 | 현재 재고 |
| 인사 관리 | 직원명 + 월 | 급여 또는 근무시간 |
| 학원/교육 관리 | 수강생명 + 과목 | 출석 여부 또는 점수 |
| 회계 관리 | 거래처 + 계정과목 | 거래금액 |
예를 들어 광고 성과표에서 특정 날짜의 특정 캠페인 비용을 가져오고 싶다면 다음과 같은 구조를 만들 수 있습니다.
=INDEX(비용범위, MATCH(1, (날짜범위=조회날짜)*(캠페인범위=조회캠페인명), 0))
이 수식을 활용하면 매일 새로 들어오는 광고 데이터를 기준으로 요약표를 자동 업데이트할 수 있습니다.
10. INDEX MATCH와 FILTER 함수 중 무엇을 써야 할까?
구글 스프레드시트나 최신 엑셀에서는 FILTER 함수도 많이 사용합니다.
예를 들어 다중조건으로 값을 찾을 때 FILTER 함수는 다음처럼 쓸 수 있습니다.
=FILTER($C$2:$C$5, $A$2:$A$5=E2, $B$2:$B$5=F2)
FILTER 함수는 조건에 맞는 값이 여러 개 있을 때 여러 결과를 반환할 수 있다는 장점이 있습니다. 반면 INDEX MATCH는 보통 조건에 맞는 첫 번째 값을 하나만 가져오는 데 적합합니다.
| 구분 | INDEX MATCH | FILTER |
| 결과 개수 | 주로 1개 | 여러 개 가능 |
| 요약표 자동화 | 적합 | 적합 |
| 단일 값 검색 | 매우 적합 | 가능 |
| 여러 결과 나열 | 불편함 | 유리함 |
| 구버전 엑셀 호환성 | 상대적으로 좋음 | 제한적일 수 있음 |
따라서 조건에 맞는 값 하나를 가져오는 조회표를 만들 때는 INDEX MATCH가 좋고, 조건에 맞는 여러 행을 모두 보여주는 목록을 만들 때는 FILTER 함수가 더 적합합니다.
11. 실무에서 가장 많이 쓰는 INDEX MATCH 수식 모음
1) 하나의 조건으로 값 찾기
=INDEX(결과범위, MATCH(찾을값, 기준범위, 0))
예시:
=INDEX($C$2:$C$10, MATCH(E2, $A$2:$A$10, 0))
2) 행과 열을 동시에 찾아 값 가져오기
=INDEX(값범위, MATCH(행조건, 행기준범위, 0), MATCH(열조건, 열기준범위, 0))
예시:
=INDEX($H$2:$K$4, MATCH($A2, $G$2:$G$4, 0), MATCH(B$1, $H$1:$K$1, 0))
3) 두 가지 조건으로 값 찾기
=INDEX(결과범위, MATCH(1, (조건범위1=조건1)*(조건범위2=조건2), 0))
예시:
=INDEX($C$2:$C$5, MATCH(1, ($A$2:$A$5=E2)*($B$2:$B$5=F2), 0))
4) 세 가지 조건으로 값 찾기
=INDEX(결과범위, MATCH(1, (조건범위1=조건1)*(조건범위2=조건2)*(조건범위3=조건3), 0))
예시:
=INDEX($D$2:$D$5, MATCH(1, ($A$2:$A$5=F2)*($B$2:$B$5=G2)*($C$2:$C$5=H2), 0))
5) 오류가 날 때 빈칸으로 처리하기
=IFERROR(INDEX(결과범위, MATCH(1, (조건범위1=조건1)*(조건범위2=조건2), 0)), "")
12. 자주 묻는 질문(FAQ)
Q1. INDEX MATCH와 VLOOKUP 중 무엇이 더 좋나요?
A. 단순 조회에는 VLOOKUP도 충분하지만, 열 위치가 바뀌거나 왼쪽 방향 조회, 행·열 동시 검색, 다중조건 검색이 필요하다면 INDEX MATCH가 더 유연합니다.
Q2. INDEX MATCH로 조건 2개 이상을 동시에 검색할 수 있나요?
A. 가능합니다. 조건식을 곱해서 모두 만족하는 행만 1로 만든 뒤 MATCH(1,...)로 찾으면 됩니다.
Q3. 엑셀과 구글 스프레드시트에서 INDEX MATCH 수식이 같은가요?
A. 기본 구조는 거의 같습니다. 다만 지역 설정에 따라 쉼표 , 대신 세미콜론 ;을 사용해야 할 수 있습니다.
Q4. INDEX MATCH 다중조건 수식에서 #N/A가 나오는 이유는?
A. 조건에 맞는 값이 없거나, 날짜 형식이 다르거나, 보이지 않는 공백이 포함된 경우가 많습니다. 이때는 조건값, 날짜 형식, 공백 여부를 먼저 확인해야 합니다.
Q5. INDEX MATCH와 FILTER 함수는 언제 구분해서 쓰나요?
A. 조건에 맞는 값 하나만 가져오려면 INDEX MATCH, 조건에 맞는 여러 결과를 모두 보여주려면 FILTER 함수가 더 적합합니다.
결론: INDEX MATCH는 실무형 다중조건 검색의 핵심 함수
INDEX MATCH 함수는 처음에는 VLOOKUP보다 어렵게 느껴질 수 있습니다. 하지만 구조를 이해하면 훨씬 유연하고 강력한 검색 수식을 만들 수 있습니다.
핵심은 단순합니다.
- MATCH 함수로 조건에 맞는 위치를 찾고
- INDEX 함수로 해당 위치의 값을 가져온다
- 조건이 여러 개라면 조건식을 곱해서 모두 만족하는 행을 찾는다
특히 날짜와 컬럼명을 동시에 기준으로 값을 가져오거나, 담당자·상품명·지점처럼 여러 조건을 조합해야 하는 업무에서는 INDEX MATCH가 매우 유용합니다.
엑셀과 구글 스프레드시트 모두에서 활용할 수 있으므로, 매출표, 재고표, 광고 성과표, 회계자료, 교육관리표 등 반복적으로 데이터를 조회해야 하는 업무라면 반드시 익혀두는 것이 좋습니다.
처음에는 아래 기본 수식 하나만 기억해도 충분합니다.
=INDEX(결과범위, MATCH(1, (조건범위1=조건1)*(조건범위2=조건2), 0))
그리고 행과 열을 동시에 기준으로 찾을 때는 아래 구조를 사용하면 됩니다.
=INDEX(값범위, MATCH(행조건, 행기준범위, 0), MATCH(열조건, 열기준범위, 0))
이 두 가지 패턴만 익혀도 대부분의 실무형 다중조건 검색 문제를 해결할 수 있습니다.
'엑셀 EXCEL' 카테고리의 다른 글
| 엑셀 LOOKUP 함수 완벽 가이드: 마지막 값 찾기와 조건 활용법 (1) | 2024.11.19 |
|---|---|
| 엑셀 한 셀에서 단일 문자의 개수를 세는 수식 (0) | 2024.11.01 |
| 엑셀 콤마를 탭으로 바꾸기 (엑셀 텍스트 나누기 마법사로 텍스트를 여러 열로 나누기) (0) | 2021.01.10 |
| 여러 개의 조건에 부합하는 셀 갯수 카운트하기 How To Countif With Multiple Criteria In Excel (0) | 2020.07.17 |
| 텍스트가 포함한 셀 갯수 카운트하기 How To Count If Cell Contains Text Or Part Of Text In Excel (2) | 2020.07.17 |