VLOOKUP은 엑셀에서 가장 많이 쓰이는 함수이지만, 딱 한 가지 인수를 잘못 입력해도 결과가 완전히 틀리거나 오류가 납니다. 이 글 하나로 기본 사용법부터 자주 나오는 오류 해결, 실무 팁까지 전부 정리했습니다. 왜 그 인수가 그 자리에 있어야 하는지 모르고 쓰면 언제든 다시 막히게 됩니다.
✅ 오류 원인 대부분은 범위·자료형 불일치
✅ FALSE 정확히 일치로 실무 오류 90% 방지
1VLOOKUP이 정확히 무엇을 하는 함수인가요?
VLOOKUP은 Vertical Lookup의 줄임말로, 세로 방향(열)으로 데이터를 검색해서 원하는 값을 가져오는 함수입니다. 예를 들어 직원 번호를 입력하면 그 번호에 해당하는 이름, 부서, 급여를 자동으로 불러오는 상황에 씁니다.
엑셀 2003 버전부터 존재했고, Microsoft 365와 엑셀 2021에서도 동일하게 작동합니다.
기본 문법은 =VLOOKUP(찾을값, 범위, 열번호, 일치방법) 으로 인수가 정확히 4개입니다. 찾을값은 기준이 되는 키(예: 직원번호), 범위는 데이터가 있는 표 전체, 열번호는 그 표에서 몇 번째 열의 값을 가져올지, 일치방법은 FALSE(정확히 일치) 또는 TRUE(근사치 일치)를 넣습니다.
2왜 오류가 나는 걸까요? 원인 3가지
첫 번째 원인은 일치방법 인수를 생략하거나 TRUE로 설정하는 실수입니다. 인수를 비워두면 엑셀은 기본값 TRUE(근사치)를 적용하고, 이때 데이터가 오름차순으로 정렬되어 있지 않으면 엉뚱한 값을 가져옵니다.
실무에서 데이터가 항상 정렬된 상태일 수는 없으니, 반드시 마지막 인수를 FALSE로 써야 합니다.
두 번째 원인은 찾을값과 범위 데이터의 자료형이 다른 경우입니다. 한쪽은 숫자, 다른 쪽은 텍스트로 저장된 숫자일 때 겉모습은 같아도 엑셀 내부에서는 다른 값으로 인식해 #N/A 오류를 냅니다.
셀 왼쪽 상단에 초록색 삼각형이 보이면 텍스트로 저장된 숫자라는 경고 표시입니다.
세 번째 원인은 범위를 절대 참조($)로 고정하지 않아서, 수식을 아래로 복사할 때 범위가 함께 밀려 내려가는 문제입니다. 예를 들어 범위를 A2:C100으로 설정하고 수식을 복사하면 A3:C101, A4:C102로 계속 바뀌어서 아래 행으로 갈수록 데이터를 못 찾습니다.
단계별 기본 사용법 — 지금 바로 따라 하기 (약 5분)
1단계. 엑셀 파일을 열고, 결과값을 표시할 빈 셀(예: E2)을 클릭합니다.
2단계. 수식 입력줄에 =VLOOKUP( 을 입력합니다.
이때 엑셀이 함수 도움말 풍선을 자동으로 보여주니 참고하세요.
3단계. 찾을값인 D2 셀을 클릭하고 쉼표(,)를 입력합니다.
D2에는 검색 키(직원번호 등)가 있어야 합니다.
4단계. 참조할 데이터 표 범위를 드래그합니다(예: A2:C100).
드래그 후 키보드 F4 키를 한 번 누르면 $A$2:$C$100으로 절대 참조가 됩니다. 이 단계가 수식 복사 오류를 막는 핵심입니다.
5단계. 쉼표를 입력하고, 가져올 열 번호를 숫자로 입력합니다.
범위의 첫 번째 열이 1번이고 오른쪽으로 갈수록 2, 3이 됩니다.
6단계. 쉼표 후 FALSE를 입력하고 괄호를 닫습니다.
최종 수식 예시: =VLOOKUP(D2,$A$2:$C$100,2,FALSE). Enter를 누르면 완료입니다.
7단계. E2 셀 오른쪽 하단 모서리의 작은 ■(채우기 핸들)을 더블클릭하면 아래 행 전체에 수식이 자동 복사됩니다.
데이터가 1,000행이어도 1초면 끝납니다.
3#N/A, #VALUE! 오류가 계속 난다면?
#N/A는 찾는 값이 범위에 없다는 뜻입니다. 이때는 IFERROR 함수를 감싸면 됩니다.
=IFERROR(VLOOKUP(D2,$A$2:$C$100,2,FALSE),"없음") 처럼 쓰면 값을 못 찾았을 때 "없음"으로 표시되고, 보고서가 #N/A로 가득 차는 상황을 막습니다.
자료형 불일치로 오류가 날 때는 찾을값에 VALUE() 또는 TEXT() 함수를 씌워 강제 변환합니다. 범위의 키 열이 숫자인데 찾을값이 텍스트면 VALUE(D2)로, 반대 상황이면 TEXT(D2,"0")으로 맞춰주세요.
열 번호를 매번 세야 하나요? 더 스마트한 방법
열 번호를 하드코딩하면 나중에 열이 추가·삭제될 때 수식이 틀려집니다. 이럴 때 MATCH 함수를 조합하면 열 이름으로 자동 계산할 수 있습니다.
=VLOOKUP(D2,$A$2:$C$100,MATCH("부서",$A$1:$C$1,0),FALSE) 처럼 쓰면 헤더 행에서 "부서" 열이 몇 번째인지 MATCH가 알아서 찾아줍니다. 열 순서가 바뀌어도 수식을 고칠 필요가 없습니다.
엑셀 365 또는 엑셀 2021 사용자라면 VLOOKUP 대신 XLOOKUP 함수를 쓰는 것이 훨씬 편합니다. XLOOKUP은 왼쪽 방향 검색도 되고, 열 번호 없이 결과 범위를 직접 지정하며, 기본값 자체가 정확히 일치라서 FALSE를 따로 입력하지 않아도 됩니다.
단, 엑셀 2019 이하 버전에서는 XLOOKUP이 지원되지 않으니 호환성이 필요하면 VLOOKUP을 유지하세요.
4초보가 가장 많이 하는 실수 2가지
첫 번째는 범위를 열 전체로 잡는 것입니다. 예를 들어 A:C처럼 열 전체를 범위로 설정하면 편리해 보이지만, 엑셀이 100만 행 이상을 전부 검색하려 해서 파일 속도가 눈에 띄게 느려집니다.
실제 데이터 행까지만 범위를 잡는 것이 올바른 방법입니다.
두 번째는 수식 안에 찾을값을 직접 텍스트로 입력하는 것입니다. =VLOOKUP("홍길동",…
처럼 쓰면 그 한 줄만 작동하고 수식 복사가 무의미해집니다. 찾을값은 항상 셀 참조(예: D2)로 지정해야 복사와 자동화가 제대로 됩니다.
이 두 가지만 주의해도 VLOOKUP 관련 민원의 절반은 사라집니다.
답글 남기기