• 최초 작성일: 2002-10-29
  • 최종 수정일: 2026-09-29
  • 조회수: 26 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VLOOKUP과 INDIRECT로 시트명을 셀 값으로 동적 참조하기

들어가기 전에

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

An eagle does not catch flies.

독수리는 파리를 잡지 않는다.

진정 힘이 있는 강자는 약자를 괴롭히지 않는다는 의미겠지요.

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

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

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


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

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

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

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

VLOOKUP과 INDIRECT로 시트명을 셀 값으로 동적 참조하기

핵심 요약

VLOOKUP 함수의 참조 범위에 들어갈 시트명을 직접 입력하는 대신, 셀에 입력된 문자열을 INDIRECT 함수로 변환하면 참조 대상 시트를 동적으로 바꿀 수 있습니다.

  • 핵심 함수: INDIRECT — 문자열을 실제 셀/시트 참조로 변환
  • 조합 방법: VLOOKUP의 두 번째 인수(table_array) 자리에 INDIRECT("'"&셀&"'!범위") 형태로 삽입
  • 주의점: 시트명은 작은따옴표로 감싸야 공백·숫자가 섞여도 정상 참조됨

질문: 시트명을 셀 값으로 받아서 수식에 반영할 수 있나요?

수식에 포함된 참조 대상(1. 참조되는 다른 파일의 이름, 2. 또는 다른 시트명)을 직접 입력하지 않고, 특정 셀에 입력해 두면 그 내용을 수식에 동적으로 반영하는 방법이 있는지요?

예를 들어 A4 셀에 =VLOOKUP(A3,'2002년도자료'!판매실적,2)라는 수식이 있을 때, 여기서 '2002년도자료' 부분을 다른 셀(A2)에 입력해 두고 그 내용을 참조해서 A4 수식을 완성하는 방법이 있는지요?

여러 번 반복된 질문인지 모르겠습니다. 혹 유사한 내용이 있으면 검색할 수 있는 단어라도 일러 주신다면 감사하겠습니다.

위 질문을 한 문장으로 요약하면 "VLOOKUP 함수의 인수로 (셀에 입력된) 문자열을 받을 수 있느냐?"는 것입니다.

직접 해보기 — 지점명을 선택하면 판매 금액이 바뀌는 예제

아래의 콤보 박스에서 지점명을 선택해 보세요. 선택한 지점에 해당하는 시트를 찾아가서 판매 금액을 가져오는 구조입니다.

셀 내용
지점명 선택 결과 =INDEX(2002년도판매실적!A2:A30,Preface!B36)
대상 시트 2002년도판매실적
결과 문구 ="선택하신 "&B35&"지점의 판매 금액은 "&TEXT(VLOOKUP(B35,INDIRECT("'"&C37&"'!A1:B4"),2),"#,##0")&" 백만원 입니다!"

잘 되지요? '문자열을 셀 주소 형식으로 바꾸어 주는 함수', 즉 INDIRECT 함수를 알고 있다면 쉽게 해결할 수 있는 문제입니다. 참조 함수인 VLOOKUP과 역시 참조 함수인 INDIRECT를 조합하면 됩니다.

=VLOOKUP(B31,INDIRECT("'"&C33&"'!A1:B4"),2)

이런 식으로 표현하면 됩니다. 그냥 이렇게만 하면 재미가 없으니, TEXT 함수와 & 연산자를 사용해 형태를 조금 바꿔 보면 다음과 같습니다.

="선택하신 "&B31&"지점의 판매 금액은 "&TEXT(VLOOKUP(B31,INDIRECT("'"&C33&"'!A1:B4"),2),"#,##0")&" 백만원 입니다!"

수식 사용의 결과값은 보기 좋은데, 수식 자체는 좀 복잡해 보이는군요.

정리 — 시트명을 동적으로 참조하는 방법

목적 수식 형태
셀 값을 시트 참조로 변환 INDIRECT("'"&셀&"'!범위")
VLOOKUP과 조합해 동적 참조 =VLOOKUP(찾을값,INDIRECT("'"&시트셀&"'!범위"),열번호)
결과를 문장으로 표시 TEXT 함수와 & 연산자로 문자열과 조합

자주 묻는 질문 (FAQ)

Q1. 시트명을 셀에 입력해 두고 수식에서 참조할 수 있나요?

네. INDIRECT 함수를 사용하면 셀에 입력된 문자열(시트명)을 실제 셀 참조로 변환할 수 있어, VLOOKUP 등의 인수 자리에 그대로 넣어 사용할 수 있습니다.

Q2. INDIRECT 함수가 왜 필요한가요?

VLOOKUP 같은 참조 함수는 텍스트 문자열을 그대로 시트명이나 범위로 해석하지 못합니다. INDIRECT 함수가 문자열을 실제 참조로 바꿔 주기 때문에, 시트명이 바뀌어도 수식을 고치지 않고 참조 대상만 바꿀 수 있습니다.

Q3. 시트명에 공백이나 숫자가 포함되어 있으면 어떻게 하나요?

시트명은 작은따옴표로 감싸 참조해야 합니다. INDIRECT("'"&셀&"'!범위") 형태로 작은따옴표를 문자열에 포함시키면, 시트명에 공백이나 숫자가 있어도 문제없이 참조할 수 있습니다.

마치며

시트명 하나 때문에 수식을 매번 뜯어고쳐야 한다면 번거롭겠죠. INDIRECT 함수로 시트명을 셀 값에 맡겨두면, 콤보 박스나 드롭다운 선택만으로 참조 대상을 자유자재로 바꿀 수 있습니다. VLOOKUP과 자주 씨름하신다면 오늘 방법을 꼭 응용해 보세요!