“김 대리, 이거 데이터가 왜 이래? 값이 다 밀렸잖아!”
입사 1년 차, 팀장님의 불호령에 식은땀 뻘뻘 흘리며 모니터만 쳐다보던 기억이 아직도 생생합니다.
분명 VLOOKUP으로 완벽하게 걸어뒀다고 생각했거든요.
그런데 중간에 열 하나 추가했다고 수식이 와르르 무너져 내리더군요.
퇴근 시간은 다가오는데 #REF! 오류는 사라질 기미가 안 보이고, 진짜 울고 싶었습니다.
- ✅ VLOOKUP 쓰려고 데이터를 억지로 왼쪽으로 옮긴 적 있다.
- ✅ 열 번호 세다가 눈이 빠질 뻔했다 (A, B, C… 15번째 열이 뭐지?).
- ✅ 데이터 양이 많아지니 엑셀이 버벅거리고 멈춘다.
하나라도 해당된다면 오늘 정말 잘 오셨습니다.
제가 야근 지옥에서 탈출하게 해 준 구세주, INDEX MATCH 함수 조합을 아주 쉽게, 떠먹여 드리듯이 알려드릴게요.
이것만 알면 엑셀 실무 능력 상위 10% 안에는 무조건 들어갑니다.
진짜 실무자는 VLOOKUP 안 씁니다.
이제 칼퇴하러 가보시죠!
1. VLOOKUP, 도대체 뭐가 문제일까?
많은 분들이 엑셀 배우기 시작할 때 가장 먼저 접하는 게 브이룩업입니다.
물론 훌륭한 함수입니다.
하지만 치명적인 단점이 몇 가지 있죠.
이걸 알아야 왜 우리가 갈아타야 하는지 이해가 빠르실 거예요.
치명적인 단점 3가지
첫째, 무조건 오른쪽으로만 찾습니다.
기준 열보다 왼쪽에 있는 값은 죽었다 깨어나도 못 가져옵니다.
그래서 멀쩡한 표를 뜯어고쳐야 하는 번거로움이 생기죠.
둘째, 열 번호를 직접 세야 합니다.
“세 번째 열 가져와”라고 3을 입력했는데, 나중에 사이에 열 하나가 추가되면?
원래 3번째였던 게 4번째가 되면서 엉뚱한 값을 가져오게 됩니다.
이게 바로 ‘수식 깨짐’의 주범입니다.
셋째, 데이터가 많으면 느립니다.
표 전체를 범위로 잡다 보니, 수만 행이 넘어가면 엑셀이 거북이처럼 느려집니다.
실무에서는 데이터 구조가 수시로 바뀝니다. VLOOKUP은 이런 변화에 너무 취약해요. 유지보수가 쉬운 엑셀 파일을 만들려면 INDEX MATCH가 필수입니다.
2. INDEX와 MATCH, 따로 또 같이 이해하기
어렵게 생각하지 마세요.
이 두 녀석은 역할이 아주 명확합니다.
우리가 보물찾기를 한다고 상상해 볼게요.
INDEX: 지도를 펼치는 역할
INDEX 함수는 ‘특정 위치에 있는 값’을 콕 집어내는 역할을 합니다.
지도에서 “위에서 3번째, 왼쪽에서 2번째 칸에 뭐가 있어?”라고 물어보는 것과 같아요.
예를 들어 =INDEX(A1:C10, 3, 2)라면, A1부터 C10까지 범위 중 3행 2열에 있는 값을 가져옵니다.
MATCH: 위치를 알려주는 나침반
MATCH 함수는 내가 찾는 값이 ‘몇 번째에 있는지’ 숫자로 알려줍니다.
“철수가 명단에서 몇 번째 줄에 있어?”라고 물으면 “5번째!”라고 대답해주는 식이죠.
여기서 끝의 ‘0’은 정확히 일치하는 값을 찾으라는 뜻입니다. (무조건 0 쓴다고 외우세요!)
3. 드디어 합체! 실무 최강 조합 공식
자, 이제 두 개를 합쳐볼까요?
원리는 아주 심플합니다.
INDEX한테 “야, 몇 번째 줄 가져와!”라고 시키는데, 그 ‘몇 번째’인지를 MATCH가 찾아서 알려주는 겁니다.
이것만 기억하세요.
이 공식 하나면 엑셀 인생이 바뀝니다.
VLOOKUP처럼 열 번호를 셀 필요가 없어요.
그냥 ‘결과가 있는 열’과 ‘기준이 되는 열’만 지정하면 끝입니다.
실전 예제: 직원 ID로 이름 찾기
상황을 가정해 봅시다.
A열에는 ‘이름’, B열에는 ‘직원 ID’가 있습니다.
우리는 직원 ID(B열)를 가지고 이름(A열)을 찾고 싶어요.
VLOOKUP으로는 불가능하죠? (기준인 ID가 오른쪽에 있으니까요)
하지만 INDEX MATCH는 가능합니다.
| 행 | A (이름) | B (ID) |
|---|---|---|
| 1 | 김철수 | EMP001 |
| 2 | 이영희 | EMP002 |
목표: ID가 ‘EMP002’인 사람의 이름을 찾자!
1단계 (MATCH): ‘EMP002’가 B열에서 몇 번째인지 찾습니다.
MATCH("EMP002", B:B, 0) → 결과는 2 (2번째 행이니까요)
2단계 (INDEX): A열(이름)에서 2번째 값을 가져옵니다.
INDEX(A:A, 2) → 결과는 ‘이영희’
최종 수식:
=INDEX(A:A, MATCH("EMP002", B:B, 0))
참 쉽죠?
오른쪽에서 왼쪽을 찾든, 왼쪽에서 오른쪽을 찾든 전혀 상관없습니다.
4. 비교 불가! VLOOKUP보다 좋은 점 총정리
아직도 망설여지시나요?
표로 한눈에 비교해 드릴게요.
이걸 보면 다시는 VLOOKUP으로 돌아가고 싶지 않으실 겁니다.
| 구분 | VLOOKUP | INDEX MATCH |
|---|---|---|
| 방향 | 좌 → 우 (고정) | 양방향 자유자재 |
| 열 삽입 시 | 오류 발생 (값 밀림) | 문제 없음 (자동 참조) |
| 속도 | 느림 (범위 전체 로드) | 빠름 (필요한 열만 참조) |
| 글자 수 제한 | 255자 | 제한 없음 |
특히 ‘열 삽입 시 문제없음’이 진짜 큽니다.
동료가 내 파일을 건드려서 열 하나 추가해도, INDEX MATCH 수식은 끄떡없거든요.
내 퇴근 시간을 지켜주는 든든한 방패인 셈이죠.
5. 보너스: 다중 조건 검색 (두 가지 조건 만족하기)
실무 하다 보면 이런 경우 꼭 생깁니다.
“부서가 ‘영업팀’이면서 직급이 ‘과장’인 사람 찾아줘.”
VLOOKUP은 이거 하려면 ‘영업팀과장’이라는 보조열을 또 만들어야 합니다.
진짜 귀찮죠.
하지만 우리는 배열 수식을 이용해 한 방에 해결할 수 있습니다.
=INDEX(결과범위, MATCH(1, (조건1범위=조건1)*(조건2범위=조건2), 0))
* 입력 후 Ctrl + Shift + Enter를 눌러야 할 수도 있습니다 (구버전 엑셀의 경우).
처음엔 조금 복잡해 보일 수 있어요.
하지만 그냥 공식을 메모장에 복사해 두고, 필요할 때 범위만 바꿔서 쓰세요.
저도 그렇게 시작했습니다.
자주 묻는 질문 (FAQ)
Q. XLOOKUP이라는 것도 있다던데 그게 더 좋나요?
A. 네, 사실 XLOOKUP이 가장 최신이고 사용하기도 쉽습니다. 하지만 회사 컴퓨터가 구버전 엑셀(2019 이전)을 쓰고 있다면 XLOOKUP이 작동하지 않아요. 그래서 호환성 걱정 없는 INDEX MATCH가 여전히 ‘국룰’인 이유입니다.
Q. MATCH 함수 뒤에 0은 꼭 붙여야 하나요?
A. 네! 99%의 경우 0(정확히 일치)을 씁니다. 1이나 -1을 쓰면 ‘근사값’을 찾는데, 이러면 엉뚱한 데이터를 가져올 확률이 매우 높습니다. 무조건 0을 붙인다고 생각하세요.
Q. #N/A 오류가 계속 떠요.
A. 찾는 값에 공백(스페이스바)이 포함되어 있는지 확인해보세요. 눈에 안 보이는 공백 때문에 일치가 안 되는 경우가 가장 많습니다. ‘TRIM’ 함수로 공백을 제거하면 해결됩니다.
마치며: 이제 엑셀 노예에서 해방되세요
처음엔 =INDEX(범위, MATCH(...)) 괄호 열고 닫는 게 헷갈릴 수 있습니다.
당연합니다. 저도 처음엔 수식 오류만 10번 넘게 냈으니까요.
하지만 딱 세 번만 직접 타이핑해서 써보세요.
손에 익는 순간, 여러분의 엑셀 작업 속도는 비교도 안 되게 빨라질 겁니다.
단순 반복 작업은 엑셀에게 맡기고, 우리는 더 생산적인 일(또는 칼퇴)에 집중해야죠.
지금 당장 여러분의 엑셀 파일 하나를 열어서 VLOOKUP을 INDEX MATCH로 바꿔보세요.
그 작은 시도가 여러분의 연봉과 워라밸을 바꿔줄 겁니다.
오늘 다룬 내용을 눈으로만 보지 말고,
빈 엑셀 시트를 켜서 아무 데이터나 넣고 ‘거꾸로 찾기’를 시도해 보세요!
성공하는 순간의 짜릿함을 꼭 느껴보시길 바랍니다.





