ExcelINDIRECT동적 참조

엑셀 INDIRECT

텍스트를 셀 참조로 변환 — 시트 이름 동적 참조·종속 드롭다운의 핵심

INDIRECT 수식 구조

=INDIRECT(참조 텍스트, [A1형식])

참조 텍스트 (ref_text)

셀 주소를 나타내는 텍스트. "A1", "Sheet2!B5", 다른 셀에 적힌 주소 등

A1형식 (a1, 선택)

TRUE(기본): A1 형식 / FALSE: R1C1 형식. 거의 항상 생략

일반 참조는 수식을 쓸 때 결정되지만 INDIRECT는 계산 시점에 텍스트를 보고 결정합니다. 덕분에 셀 값이 바뀌면 참조 대상도 바뀝니다 — 종속 드롭다운, 월별 시트 합산, 동적 표 이름 참조에 필수. 대신 휘발성 함수라 시트 전체 재계산을 유발할 수 있고, 닫힌 외부 파일은 참조 불가입니다.

직접 체험해보세요

주소를 입력하거나 프리셋을 누르면 그 셀이 하이라이트되고 값이 표시됩니다. 잘못된 주소(XX)도 시험해보세요

결과=INDIRECT("B2")120
ABCD
1상품1월2월3월
2사과120150180
39011095
4200230210

시트 동적 참조 — 가장 자주 쓰는 패턴

월 선택:

=INDIRECT("'1월'!B2")

셀에 적은 시트 이름이 바뀌면 참조 시트도 자동으로 바뀜

실전 활용 예제

=INDIRECT("A1")

가장 기본 — 텍스트 주소를 참조로 변환. 단순한 경우엔 그냥 =A1을 쓰는 게 빠르지만, 주소가 가변일 때만 의미 있음.

예시: =INDIRECT("A1")A1 셀 값
=INDIRECT("'"&A1&"'!B2")

시트 동적 참조 — 가장 많이 쓰는 패턴. A1에 시트 이름이 적혀 있으면 그 시트의 B2를 가져옴. 월별 시트 합산·다른 부서 보고서 통합에 활용.

예시: A1="1월" → 1월!B2 참조1월 시트의 B2
=INDIRECT(A1)

데이터 유효성 종속 드롭다운 — A1에 부서를 고르면 B1의 드롭다운이 그 부서의 직원 목록(이름 정의된 범위)을 표시. 데이터 유효성 목록 인수에 INDIRECT 사용.

예시: A1="영업" → INDIRECT("영업")이름 정의 '영업' 범위
=SUM(INDIRECT("A1:A"&B1))

가변 마지막 행 — B1에 행 수가 있으면 A1부터 그 행까지 합산. 매일 데이터가 늘어나는 시트에서 자동 확장 합계.

예시: B1=100 → SUM(A1:A100)A1~A100 합
더 알아보기

종속 드롭다운 만들기 — INDIRECT의 가장 강력한 응용

"부서를 고르면 그 부서의 직원만 나오는 드롭다운" — 데이터 유효성 + 이름 정의 + INDIRECT 3가지의 조합으로 만듭니다.

3단계 레시피

1. 이름 정의: 영업·개발·인사 각 범위에 부서명으로 이름 지정

2. A1에 데이터 유효성 → 목록 → 영업,개발,인사

3. B1에 데이터 유효성 → 목록 → 수식: =INDIRECT(A1)

A1에서 "영업"을 고르면 INDIRECT("영업")이 영업 범위로 평가되어 B1 드롭다운에 영업부 직원만 나옵니다. 이름 정의 대신 표(Ctrl+T) + 구조적 참조를 써도 비슷한 효과를 낼 수 있습니다.

INDIRECT vs INDEX vs OFFSET — 동적 참조 3대장

셋 다 "런타임에 참조 결정"이라는 점은 같지만 입력 방식과 비용이 다릅니다.

함수입력휘발성시트 동적
INDIRECT텍스트YES
INDEX범위+숫자NO×
OFFSET기준+이동YES×

실무 가이드: 시트 이름이나 표 이름을 동적으로 결정해야 하면 INDIRECT 외 선택지 없음. 같은 시트 내 위치만 동적이면 INDEX가 비휘발성이라 빠릅니다. 범위 자체를 키워야 하면 OFFSET.

INDIRECT의 함정 — 알아두지 않으면 크게 데임

INDIRECT는 강력한 만큼 부작용도 큽니다. 미리 알아두면 디버깅 시간이 줄어듭니다.

3가지 주의 사항

1. 닫힌 외부 파일 불가 — 다른 워크북 참조는 그 파일이 열려 있을 때만 동작. #REF!

2. 휘발성 — 성능: 어떤 셀이 바뀌어도 모두 재계산. 큰 시트에서 INDIRECT 수백 개는 느려짐

3. 시트 이름에 공백·특수문자: 작은따옴표 필수 → "'1월 매출'!A1"

대안: 가능하면 INDEX/XLOOKUP을 우선 고려. 시트 동적 참조가 진짜 필요한 경우에만 INDIRECT를 사용하세요.

자주 묻는 질문 (FAQ)

Q. =INDIRECT(A1)이 #REF! 오류가 떠요

A1에 적힌 텍스트가 유효한 셀 주소가 아니거나, 해당 시트가 닫혀 있거나, 한국어 시트 이름인데 작은 따옴표를 빠뜨린 경우입니다. "'1월'!A1"처럼 시트 이름 양쪽에 작은따옴표를 붙이면 안전합니다.

Q. 표(Ctrl+T)의 구조적 참조도 INDIRECT로?

가능하지만 까다롭습니다 — =INDIRECT("매출표[합계]") 식으로 텍스트로 감싸야 합니다. M365라면 FILTER + 표가 훨씬 깔끔합니다.

Q. INDIRECT를 안 쓰고 같은 효과를?

시트 이름이 정해진 패턴(예: 1월·2월·3월)이라면 CHOOSE + MATCH 조합으로 비휘발성 대안을 만들 수 있습니다. 다만 시트 추가 시 수식 수정이 필요해 INDIRECT 쪽이 유지보수에 유리합니다.

Q. R1C1 형식은 언제 쓰나요?

거의 안 씁니다. 두 번째 인수에 FALSE를 넘기면 R1C1 형식으로 해석합니다 — INDIRECT("R2C3", FALSE) = C2. 매크로 호환성이나 특수한 동적 계산에서 가끔 등장하는 정도입니다.