• 최초 작성일: 2007-05-31
  • 최종 수정일: 2026-09-25
  • 조회수: 24 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VLOOKUP과 IF로 여러 테이블(시트) 내용 참조하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

질문 하나
VLOOKUP 함수에서는 여러 영역의 데이터를 참조하는 것이 원래부터 안되는 것인가요?
=VLOOKUP(A1,'1월:3월'!A:E,2,0)
이렇게 하니 #VALUE 라는 에러가 뜨고 계산이 안되는데요… 수정 부탁드려요~

여러 가지로 테스트를 많이 해 보시는군요.

사실 Vlookup 함수는 여러 개의 테이블을 참조하는 기능을 제공하지는 않지만(제공하지 않는다기보다 흔히들 그렇게 알고 있지만) 약간만 생각을 해 보면 불가능할 것 같지는 않습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

VLOOKUP과 IF로 여러 테이블(시트) 내용 참조하기

핵심 요약: VLOOKUP + IF로 여러 시트 참조하기

VLOOKUP 함수의 2번째 인수(table_array)에 IF 함수를 중첩하면, 조건에 따라 참조할 시트(테이블)를 동적으로 바꿀 수 있습니다.

  • 핵심 아이디어: VLOOKUP은 원래 하나의 표만 참조하지만, table_array 자리에 IF를 넣으면 여러 표 중 하나를 골라 참조하게 만들 수 있음
  • 예제 구조: 1월/2월/3월 시트에 각각 동일한 형식의 성적표를 두고, 선택한 월에 따라 다른 시트를 참조
  • 수식: =VLOOKUP(이름,IF(월="1월",'1월'!범위,IF(월="2월",'2월'!범위,'3월'!범위)),5,FALSE)

Step 1: 예제 데이터 — 1월·2월·3월 모의고사 성적표

다음의 표에서 월과 이름을 선택해 보면 세 개의 시트를 참조하여 결과값을 돌려주고 있음을 알 수 있습니다. 바로 수식을 보지 마시고 어떻게 한 것인지 잠시 생각해 보시기 바랍니다.

세 시트(1월/2월/3월)에는 아래와 같이 같은 구조(이름·국어·영어·수학·평균)의 성적표가 각각 들어 있습니다.

1월 모의고사 성적표
이름 국어 영어 수학 평균
조승우65162234.33
한근태16884148.33
이나영5410523
전지현39659466
김태희25589559.33
2월 모의고사 성적표
이름 국어 영어 수학 평균
조승우65265348
한근태6722230.33
이나영57873158.33
전지현91271745
김태희4507439.67
3월 모의고사 성적표
이름 국어 영어 수학 평균
조승우62405251.33
한근태9551125
이나영96705874.67
전지현89853770.33
김태희2322316

Step 2: 월 선택 → 이름 선택 → 평균점수 조회 데모

예를 들어 '월 선택'에서 2월, '이름 선택'에서 조승우를 고르면 다음과 같은 결과가 나옵니다.

월 선택 2월
이름 선택 조승우
평균점수 48

2월 시트에서 조승우의 평균이 48이었죠? 정확히 일치합니다. 위의 평균점수 부분에는 다음과 같은 수식이 들어 있습니다.

=VLOOKUP(C31,IF(C30="1월",'1월'!A3:E8,IF(C30="2월",'2월'!A3:E8,'3월'!A3:E8)),5,FALSE)

우리가 잘 아는 Vlookup 함수와, 더 잘 알고 있는 If 함수를 중첩하여 사용했군요. 즉, Vlookup 함수의 2번째 구성 요소인 table_array 인수 부분에 If 함수를 사용하면 참조 테이블의 범위를 여러 곳으로 지정해 줄 수 있는 것입니다. 보신 것처럼 시트가 다른 경우에도 가능합니다.

도구는 메이커에서 제공을 하지만 그것을 어떻게 활용하는가는 사용자의 몫으로 남습니다.

정리 — VLOOKUP + IF 중첩으로 여러 시트 참조하기

단계 핵심 작업
1. 시트 준비 1월/2월/3월처럼 같은 구조의 표를 여러 시트에 각각 만든다
2. 조건 셀 준비 참조할 시트를 고르는 '월 선택' 셀과 찾을 값을 넣는 '이름 선택' 셀을 만든다
3. 수식 작성 VLOOKUP의 table_array 자리에 IF를 중첩해 조건별로 다른 시트 범위를 지정한다
4. 결과 확인 월/이름을 바꿔가며 VLOOKUP이 해당 시트의 값을 정확히 가져오는지 확인한다

자주 묻는 질문 (FAQ)

Q1. VLOOKUP은 정말 한 개의 표만 참조할 수 있나요?

VLOOKUP 함수 자체는 하나의 table_array만 받습니다. 하지만 그 table_array 인수 자리에 IF 함수로 조건별 범위를 넣으면, 결과적으로 여러 표 중 하나를 골라 참조하는 효과를 낼 수 있습니다.

Q2. 참조할 시트가 4개 이상이면 어떻게 하나요?

IF를 계속 중첩하거나(3개 이상이면 다소 복잡해집니다), CHOOSE 함수나 INDIRECT 함수를 활용하는 방법도 있습니다. 시트가 많아질수록 IF 중첩보다 INDIRECT 방식이 수식을 더 간결하게 만들어 줍니다.

Q3. 시트 이름에 공백이나 숫자가 포함되어 있으면 문제가 되나요?

시트 이름은 반드시 작은따옴표로 감싸 참조해야 합니다(예: '1월'!A3:E8). 이 규칙만 지키면 시트 이름에 숫자나 특수한 형식이 있어도 문제없이 참조할 수 있습니다.

마치며

VLOOKUP이 한 개의 표만 본다는 건 절반만 맞는 말입니다. table_array 자리에 IF를 살짝 얹어주면 여러 표를 오가며 값을 찾아올 수 있거든요. 비슷한 상황을 만나면 한번 응용해 보세요!