목차▾
엑셀 INDIRECT 함수란?
엑셀 INDIRECT 함수는 텍스트 문자열로 표현된 셀 주소를 실제 참조로 변환하는 검색·참조 함수입니다. 시트 이름을 동적으로 바꾸거나, 종속 드롭다운(cascading dropdown)을 만들거나, 행 삭제·삽입에 영향받지 않는 고정 참조를 만들 때 핵심.
구문은 =INDIRECT(주소텍스트, [a1]) 2인수. 단, 휘발성(volatile) 함수라 시트 어디든 변경되면 매번 재계산 → 큰 시트에서 성능 저하. 가능하면 INDEX로 대체, INDIRECT는 텍스트 동적 참조에만 사용.
동작 예시 + 시트 이름 동적
A1 = 100
A2 = "A1"
=INDIRECT("A1") → 100 (텍스트 "A1" → 셀 A1 참조)
=INDIRECT(A2) → 100 (A2의 값 "A1"을 주소로)
=INDIRECT("Sheet2!B5") → Sheet2의 B5 값
=INDIRECT("'1월 매출'!A1") → 공백 시트명은 작은따옴표
핵심 활용 — 시트 이름 동적
A2 = "1월"
=INDIRECT("'"&A2&"'!B10")
→ '1월'!B10 참조
=SUM(INDIRECT("'"&A2&"'!A1:A100"))
→ 시트 이름이 A2 값에 따라 동적 변경
월별·부서별 시트가 있을 때, 드롭다운으로 시트 선택 → 자동으로 데이터 가져오기.
종속 드롭다운 + 오류
데이터 유효성 검사 + INDIRECT 조합으로 종속 드롭다운(cascading dropdown) 만들기:
1) 명명된 범위 정의:
"과일" = D2:D5 (사과, 배, 포도)
"채소" = E2:E5 (당근, 양파, 마늘)
2) A1: 데이터 유효성 → 목록 → 과일, 채소
3) B1: 데이터 유효성 → 목록 → =INDIRECT(A1)
→ A1에서 "과일" 선택하면 B1은 과일 목록만
처리하는 오류 3가지
| 오류 코드 | 풀이 | 발생 원인 |
|---|---|---|
| #REF! | 참조 오류 (Reference) | ref_text가 유효한 주소 X / 닫힌 워크북 참조 |
| #NAME? | 이름 오류 | a1 인수 잘못된 값 / 시트명 오타 |
| #NULL! | 공백 오류 | 빈 문자열 참조 |
INDIRECT vs INDEX vs OFFSET
| 함수 | 입력 | 휘발성 | 권장 |
|---|---|---|---|
| INDIRECT | 텍스트 주소 | ✅ (휘발성) | 시트 이름 동적·종속 드롭다운 |
| INDEX | 좌표 (숫자) | ❌ | 일반 동적 범위 |
| OFFSET | 좌표 + 크기 | ✅ (휘발성) | 동적 범위 (대안) |
| CHOOSE | 인덱스 | ❌ | 고정 옵션 N개 |
→ 휘발성 둘(INDIRECT, OFFSET)은 큰 시트에서 성능 저하. 가능하면 INDEX 권장, INDIRECT는 텍스트 동적 참조에만.
실전 사용 시나리오 8가지
- 텍스트 → 셀 참조 —
=INDIRECT("A1") - 시트 이름 동적 —
=INDIRECT("'"&A1&"'!B5") - 종속 드롭다운 — 데이터 유효성 →
=INDIRECT(A1) - 행 번호 동적 —
=INDIRECT("A"&B1)→ B1=5면 A5 - 시트별 합계 —
=SUM(INDIRECT("'"&A2&"'!B:B")) - 행 삭제에도 안 깨짐 —
=SUM(INDIRECT("A1:A10")) - 명명된 범위 동적 —
=SUM(INDIRECT(A1))→ A1="매출표"면 매출표 합계 - R1C1 스타일 —
=INDIRECT("R2C3", FALSE)→ 2행 3열 = C2
자주 발생하는 함정 6가지
- 휘발성 → 성능 저하 — 시트 어디든 변경되면 매번 재계산. 큰 시트에서 INDIRECT 100개 = 매번 100번 계산. 가능하면 INDEX 권장
- 닫힌 워크북 참조 → #REF! —
=INDIRECT("[다른.xlsx]Sheet1!A1")→ 다른 워크북 닫혀있으면#REF!(참조 오류). 일반 참조(=) 사용 - 시트명 공백·특수문자 —
=INDIRECT("'"&A1&"'!B5")작은따옴표로 감싸기 - 구조적 참조(테이블) 제약 —
=INDIRECT("Table1[Column1]")작동 하지만 제약. 일반 셀 참조 권장 - ref_text 오타 — "A1" 의도했는데 "A11"·"AA1" 오타 →
#REF!. 큰따옴표·앰퍼샌드(&) 매칭 주의 - 빈 셀 0 반환 — INDIRECT가 가리키는 셀이 빈 셀이면 0 (오류 아님). ISBLANK로 사전 분기
자주 묻는 질문
Q. INDIRECT 함수 사용법은?
=INDIRECT(주소텍스트, [a1]) 형식. 예: =INDIRECT("A1") → A1 값. 두 번째 인수 a1: TRUE(기본)=A1 스타일, FALSE=R1C1 스타일.
Q. INDIRECT는 언제 쓰나요?
시트 이름 동적 참조, 종속 드롭다운, 행 삭제에 안 깨지는 참조. 다른 경우엔 INDEX가 더 안전 (휘발성 없음).
Q. 시트 이름 동적은 어떻게?
=INDIRECT("'"&시트명셀&"'!A1"). 공백 시트명도 작은따옴표로 안전. 예: A1="1월 매출"이면 =INDIRECT("'"&A1&"'!B5") → '1월 매출'!B5.
Q. 종속 드롭다운 만드는 법은?
명명된 범위 정의 (예: "과일"=D2:D5, "채소"=E2:E5) → A1 유효성에 카테고리 목록 → B1 유효성에 =INDIRECT(A1). A1 선택값에 따라 B1 목록 자동 변경.
Q. 휘발성 함수가 뭔가요?
시트 어디든 변경되면 매번 재계산되는 함수. INDIRECT, OFFSET, NOW, TODAY, RAND 등. 큰 시트에서 INDIRECT 많이 쓰면 성능 저하. 가능하면 INDEX 같은 비휘발성으로 대체.
Q. 다른 워크북 참조도 되나요?
워크북 열려있을 때만. 닫혀있으면 #REF!(참조 오류). 다른 워크북은 일반 참조(=) 권장.
Q. 행 삭제해도 안 깨지는 참조는?
=SUM(A1:A10)은 행 삭제 시 =SUM(A1:A9)로 자동 조정. =SUM(INDIRECT("A1:A10"))은 텍스트라 그대로. 행 삭제·삽입에 영향받지 않는 고정 참조.
Q. 구글 스프레드시트에서도 동일하게 작동하나요?
네. INDIRECT는 표준 검색·참조 함수로 Google Sheets, LibreOffice Calc, Apple Numbers, 한컴 한셀, WPS에서 동일하게 작동합니다.
본 페이지는 Microsoft Support 공식 INDIRECT·INDEX·OFFSET 문서를 기준으로 작성되었습니다. 정확한 동작은 Excel 버전·환경에 따라 달라질 수 있으니 중요한 작업 전에는 실제 환경에서 확인하세요.