핵심 요약
- 명단에 같은 이름이 여러 명 있을 때 이름 + 생년월일 두 가지가 모두 맞는 사람의 연락처를 찾는 방법입니다.
- 맨 앞에
=B2&C2로 두 값을 붙인 "찾기 키" 열(보조열)을 만들고, 찾을 때도 똑같이 붙여VLOOKUP이나INDEX·MATCH로 찾습니다. - 예제에서 김민준 3명 중 1978-11-02생의 연락처를 정확히 가져옵니다.
고객 명단이 몇백 명을 넘어가면 동명이인이 꼭 생깁니다. 이름만 넣고 VLOOKUP으로 연락처를 찾으면, 엑셀은 위에서부터 처음 만나는 "김민준"의 번호를 가져옵니다. 오류 표시도 없이 다른 사람의 번호가 나오니 더 위험합니다. 학교에서도 같은 이름의 학생이 있는 반 성적표에서 한 사람의 점수를 찾을 때 똑같은 일이 생깁니다.
이 글은 엑셀 "목적별 함수 조합" 시리즈의 한 편입니다. 배열 수식 없이, 보조열 하나로 해결하는 방법을 중심으로 설명합니다. 엑셀 버전과 상관없이 쓸 수 있고, 수식이 짧아서 나중에 다시 봐도 이해하기 쉽습니다.
예제 표: 동명이인이 섞인 명단
B~E열이 원래 명단이고, A열은 이제 만들 보조열입니다. 이름·번호는 모두 가상입니다. 맨 윗줄의 A~E는 열 이름, 맨 왼쪽 숫자는 행 번호입니다.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 찾기 키 | 이름 | 생년월일 | 연락처 | 지역 |
| 2 | 김민준 | 1985-03-12 | 010-0000-1111 | 서울 | |
| 3 | 이서연 | 1990-07-25 | 010-0000-2222 | 부산 | |
| 4 | 김민준 | 1978-11-02 | 010-0000-3333 | 대전 | |
| 5 | 박지훈 | 1982-01-30 | 010-0000-4444 | 광주 | |
| 6 | 이서연 | 1995-12-08 | 010-0000-5555 | 인천 | |
| 7 | 최수아 | 1988-05-17 | 010-0000-6666 | 수원 | |
| 8 | 김민준 | 1985-09-04 | 010-0000-7777 | 울산 | |
| 9 | 정도윤 | 1979-04-21 | 010-0000-8888 | 청주 |
찾는 쪽은 G열에 이름, H열에 생년월일을 적고, I열에 연락처를 받겠습니다. G2에는 김민준, H2에는 1978-11-02를 입력해 둡니다.
원래 명단 왼쪽에 빈 열이 없다면 B열 머리글을 오른쪽 클릭 → [삽입]으로 한 열을 끼워 넣으면 됩니다. VLOOKUP은 찾는 값이 범위의 첫 번째 열에 있어야 해서(Microsoft 문서 기준), 보조열을 맨 왼쪽에 둡니다.
완성 수식: 보조열 A열, 찾기 I2
1) 보조열 만들기 — A2에 넣고 A9까지
=B2&C2
- A2를 클릭하고
=B2&C2를 입력한 뒤 Enter를 누릅니다. - A2의 채우기 핸들(오른쪽 아래 작은 네모)을 A9까지 끌어내립니다.
- A2에
김민준31118처럼 이름 뒤에 다섯 자리 숫자가 붙어 나오면 정상입니다. 이 숫자가 무엇인지는 아래 "수식 풀어 보기"에서 설명합니다.
2) 찾기 — I2에 넣기
=VLOOKUP(G2&H2,$A$2:$E$9,4,FALSE)
결과는 010-0000-3333입니다. 같은 김민준이라도 1978-11-02생(4행)의 번호입니다. 찾는 사람을 바꿔 가며 확인한 결과는 이렇습니다.
| G (이름) | H (생년월일) | I (결과) | |
|---|---|---|---|
| 2 | 김민준 | 1978-11-02 | 010-0000-3333 |
| 3 | 이서연 | 1995-12-08 | 010-0000-5555 |
| 4 | 김민준 | 1985-03-12 | 010-0000-1111 |
| 5 | 박지훈 | 1990-01-01 | #N/A (명단에 없는 조합) |
G3·H3 아래로도 계속 찾으려면 I2를 I5까지 끌어내리면 됩니다. 명단 범위 $A$2:$E$9에는 $를 붙여 고정했기 때문에 밀리지 않습니다. 지역을 가져오려면 세 번째 인수 4를 5로 바꿉니다(A열부터 세어 E열이 다섯 번째). 김민준·1978-11-02의 지역은 대전입니다.
수식 풀어 보기: 안쪽부터 한 겹씩
1단계: B2&C2 — 두 값을 한 덩어리로
&는 앞뒤 값을 이어 붙이는 기호입니다. 그런데 결과가 김민준1985-03-12가 아니라 김민준31118입니다. 엑셀은 날짜를 속으로 숫자(일련번호)로 저장하기 때문입니다. Microsoft 문서에 따르면 1900년 1월 1일이 1이고 하루에 1씩 늘어납니다. 1985년 3월 12일은 31118번째 날입니다. 화면에 날짜로 보이는 것은 셀 서식 덕분이고, &로 붙이면 서식이 빠진 숫자가 붙습니다.
| 행 | 이름 | 생년월일 | A열 찾기 키 |
|---|---|---|---|
| 2 | 김민준 | 1985-03-12 | 김민준31118 |
| 4 | 김민준 | 1978-11-02 | 김민준28796 |
| 8 | 김민준 | 1985-09-04 | 김민준31294 |
보기에는 낯설어도 문제없습니다. 찾는 쪽도 G2&H2로 똑같이 붙이면 김민준28796이 되어 A4와 정확히 같아집니다. 양쪽을 같은 방식으로 붙이는 것이 핵심입니다.
2단계: VLOOKUP — 키로 행을 찾아 4번째 열 가져오기
=VLOOKUP(G2&H2, $A$2:$E$9, 4, FALSE)
- 찾을 값:
G2&H2→김민준28796 - 범위:
$A$2:$E$9— 첫 열(A)에서 찾습니다. A4에서 찾습니다. - 열 번호:
4— 범위의 네 번째 열인 D열(연락처) FALSE— 정확히 같은 값만 찾습니다. 빼먹으면 근삿값으로 찾아 엉뚱한 행을 가져올 수 있습니다.
결과는 4행의 D열 값 010-0000-3333입니다.
이름만으로 찾으면 어떻게 되나요? =VLOOKUP(G2,$B$2:$E$9,3,FALSE)처럼 이름만 넣어 확인해 보니 010-0000-1111, 즉 맨 위(2행) 김민준의 번호가 나왔습니다. 오류가 나지 않아 틀린 줄 모르고 넘어가기 쉽습니다. 이름이 겹치는지 먼저 알고 싶다면 =COUNTIF($B$2:$B$9,G2)로 세어 보세요. 김민준은 3이 나옵니다.
자주 막히는 곳
분명 있는 사람인데 #N/A가 나올 때
- 생년월일 한쪽이 글자입니다. 다른 프로그램에서 복사해 온 명단은 날짜가 글자로 들어 있는 경우가 있습니다. H2가 글자
"1978-11-02"이면G2&H2는김민준1978-11-02가 되어 A열의김민준28796과 맞지 않습니다. 검증에서도#N/A가 나왔습니다. 빈 칸에=ISNUMBER(H2)를 넣어FALSE면 글자입니다. 찾는 수식을G2&DATEVALUE(H2)로 바꾸면 글자 날짜를 일련번호로 바꿔 붙여서 찾아집니다. - 이름 앞뒤에 공백이 있습니다. "김민준 "과 "김민준"은 다른 글자입니다.
=TRIM(B2)&C2처럼 보조열에서 공백을 지워 두면 안전합니다. - 보조열을 새로 채우지 않았습니다. 명단 아래에 사람을 추가했다면 A열 수식도 그 행까지 끌어내리고, VLOOKUP 범위(
$A$2:$E$9)도 늘려야 합니다.
보조열이 거슬리면 숨기세요. A열 머리글을 오른쪽 클릭 → [숨기기]를 누르면 화면에서만 사라지고 계산은 그대로 됩니다. 지우면 VLOOKUP이 찾을 곳이 없어져 오류가 나니 지우지는 마세요.
붙인 값이 우연히 겹치지 않게. 이름 뒤에 날짜 숫자가 붙는 이 예제는 겹칠 일이 거의 없습니다. 하지만 코드 "12"+"3"과 "1"+"23"처럼 둘 다 숫자인 조건을 붙이면 "123"으로 같아질 수 있습니다. 그럴 때는 =B2&"|"&C2처럼 사이에 구분 문자를 넣고, 찾는 쪽도 G2&"|"&H2로 맞춥니다.
다른 방법: INDEX·MATCH, 보조열 없이
INDEX·MATCH로 찾기 — 보조열이 어디에 있어도 됩니다
=INDEX($D$2:$D$9,MATCH(G2&H2,$A$2:$A$9,0))
MATCH(G2&H2,$A$2:$A$9,0)— 키김민준28796이 A2:A9에서 몇 번째인지 찾습니다. 결과3.INDEX($D$2:$D$9, 3)— D2:D9의 세 번째 값010-0000-3333을 꺼냅니다.
결과는 VLOOKUP과 같지만, 보조열이 명단 맨 오른쪽(예: F열)에 있어도 됩니다. 열 번호를 세지 않아도 되고, 중간에 열을 끼워 넣어도 범위가 알아서 따라옵니다. 원래 명단의 모양을 건드리고 싶지 않을 때 이쪽이 편합니다.
보조열 없이 한 번에 — 배열 수식
=INDEX($D$2:$D$9,MATCH(1,($B$2:$B$9=G2)*($C$2:$C$9=H2),0))
이름이 맞는지(참·거짓)와 생년월일이 맞는지를 곱해, 둘 다 맞는 행만 1이 되게 한 뒤 그 1의 위치를 찾습니다. 검증 결과는 위 표와 같았습니다. 다만 엑셀 2019 이하에서는 Ctrl + Shift + Enter로 입력해야 하는 배열 수식이라, 처음 쓰는 분께는 보조열 방식을 권합니다. 버전별 입력 방법과 원리는 아래 "함께 보면 좋은 글"의 INDEX MATCH 다중 조건 글에 자세히 정리해 두었습니다.
찾는 사람이 없을 때 "없음"으로
=IFERROR(VLOOKUP(G2&H2,$A$2:$E$9,4,FALSE),"없음")
명단에 없는 조합(예: 박지훈·1990-01-01)일 때 #N/A 대신 없음이 나옵니다. 다만 오타 때문에 못 찾은 경우도 "없음"으로 가려지니, 결과가 이상하면 IFERROR를 잠시 빼고 원래 오류를 확인하세요.
자주 묻는 질문
보조열에 날짜 대신 이상한 숫자가 붙어 나옵니다.
정상입니다. 엑셀은 날짜를 1900년 1월 1일을 1로 하는 일련번호로 저장하므로, &로 붙이면 그 숫자가 붙습니다. 찾는 쪽도 같은 방식으로 붙이면 똑같은 숫자가 되어 정확히 찾아집니다.
보조열을 지워도 되나요?
지우면 VLOOKUP이 찾을 곳이 사라져 오류가 납니다. 보기 싫다면 열 머리글을 오른쪽 클릭해 [숨기기]를 쓰세요. 숨겨도 계산은 그대로 됩니다.
조건이 세 개(이름·생년월일·지역)여도 되나요?
됩니다. 보조열을 =B2&C2&E2로, 찾는 값도 같은 순서로 세 개를 붙이면 됩니다. 붙이는 순서가 양쪽에서 같아야 합니다.
함께 보면 좋은 글: 엑셀 VLOOKUP 함수 사용법 총정리, 엑셀 INDEX MATCH 함수 사용법 총정리, 엑셀 INDEX MATCH 다중 조건과 2차원 찾기, 엑셀 텍스트 합치기 CONCATENATE와 &. 목적별 함수 조합 글 전체는 엑셀 목차에서 볼 수 있습니다.
참고: Microsoft 지원 — VLOOKUP 함수, Microsoft 지원 — MATCH 함수, Microsoft 지원 — DATEVALUE 함수
댓글
댓글 남기기