구글 시트 데이터 관리 혁명: INDIRECT 기능으로 수백 개 시트를 동적으로 참조하는 비법
구글 시트 데이터 관리 혁명: INDIRECT 기능으로 수백 개 시트를 동적으로 참조하는 비법
웹사이트 운영이든 대규모 프로젝트 관리든, 자료의 양이 늘어날수록 문제는 복잡해집니다. 월별, 프로젝트별, 카테고리별로 자료 시트가 수백 개로 나뉘어 있을 때, 이 모든 시트에서 특정 값을 가져와 집계하는 일은 엄청난 수작업과 오류를 유발합니다. 수식이 길어지고 시트 이름이 바뀔 때마다 수동으로 수정을 해야 하는 악몽에 시달리게 됩니다.
여러분이 간절히 바라시는 목표 달성(승인)과 안정적인 운영을 위해서는, 수작업을 최소화하고 자료를 동적으로 관리하는 시스템이 필수적입니다. 구글 스프레드시트(Google Sheets)의 숨겨진 보석, INDIRECT 함수를 활용하면, 시트 이름이나 셀 주소를 텍스트로 처리하여 참조를 유연하게 변경할 수 있습니다. 이를 통해 수백 개의 시트를 하나의 마스터 시트에서 단일 수식으로 관리하는 자동화 시스템을 구축할 수 있습니다.
이 글은 INDIRECT 함수의 기본 원리부터 시작해, 복잡한 자료 통합 작업에서 이 함수를 어떻게 활용하여 업무 효율을 극대화하는지 상세히 안내합니다.
1. INDIRECT 함수의 기본 원리 이해: 텍스트를 참조로 변환
일반적인 수식에서 셀 주소나 시트 이름은 고정된 값입니다. 하지만 INDIRECT 함수는 텍스트 문자열을 읽어 들여 **’실제 참조’**로 변환하는 마법과 같은 역할을 수행합니다.
1.1. INDIRECT 함수의 기본 구조
INDIRECT 함수는 하나의 인수로 구성됩니다.
-
기본 구조:
=INDIRECT(셀_참조를_나타내는_텍스트)
1.2. 단순 셀 참조 예시
일반적으로 C2 셀의 값을 가져오려면 =C2를 사용합니다. 하지만 INDIRECT를 사용하면 C2라는 텍스트를 이용할 수 있습니다.
-
A1 셀에 텍스트 **”C2″**를 입력합니다.
-
B1 셀에
=INDIRECT(A1)을 입력합니다. -
B1 셀에는 C2 셀의 값이 나타납니다.
핵심: C2 대신 A1 셀의 텍스트 값을 참조했기 때문에, A1 셀의 내용을 “D5″로 바꾸면 B1 셀은 자동으로 D5 셀의 값을 가져옵니다. 참조 주소가 변수(Variable)처럼 작동하게 되는 것입니다.
2. 다중 시트 통합의 혁명: 시트 이름 동적 참조
INDIRECT 함수의 가장 강력한 활용은 다중 시트 자료를 집계하는 상황입니다. 월별 자료가 ‘1월’, ‘2월’, ‘3월’ 시트에 나뉘어 있을 때 유용합니다.
2.1. 시트 이름 연결을 통한 동적 참조 구현
시트 이름(예: ‘1월’)을 마스터 시트의 셀(예: A1)에 입력하고, 이를 INDIRECT 함수와 결합하여 참조합니다.
-
시트 참조 형식: 구글 시트에서 다른 시트의 셀을 참조할 때는
='시트 이름'!셀 주소형식을 사용합니다. -
텍스트 결합 (앰퍼샌드 &): 이 참조 형식을 텍스트로 만들어야 하므로, 앰퍼샌드(&)를 사용하여 텍스트와 셀 값을 연결합니다.
-
A1 셀에 **”1월”**을 입력합니다.
-
B1 셀에
=INDIRECT("'"&A1&"'!B5")를 입력합니다.-
구성 분석: INDIRECT는 최종적으로 ‘1월’!B5 라는 텍스트를 읽어 들이고, 이를 실제 ‘1월’ 시트의 B5 셀을 참조하는 수식으로 변환합니다.
-
2.2. 드래그 가능한 다중 시트 집계표 구축
A열에 ‘1월’, ‘2월’, ‘3월’ 시트 이름을 차례로 나열하면, B열의 수식 하나만 드래그하여 모든 월별 시트의 B5 셀 값을 가져올 수 있습니다.
-
B열 수식:
=INDIRECT("'"&A1&"'!B5")-
이 수식을 B1에서 B3까지 드래그하면, B2는 ‘2월’!B5를, B3는 ‘3월’!B5를 자동으로 참조합니다. 수백 개의 시트 이름이 바뀌거나 추가되어도, A열의 목록만 수정하면 수식 수정이 필요 없습니다.
-
3. INDIRECT 함수의 고급 활용: 복잡한 수식과의 결합
INDIRECT 함수는 SUM, AVERAGE, VLOOKUP 등 다른 함수와 결합하여 자료 관리의 복잡도를 획기적으로 낮춥니다.
3.1. 동적 범위 지정 (SUM/AVERAGE)
수백 개의 시트에서 특정 범위의 합계를 가져와야 할 때, 시트 이름뿐만 아니라 참조 범위까지 동적으로 지정할 수 있습니다.
-
목표: ‘1월’ 시트의 B5부터 B10까지의 합계를 가져옵니다.
-
B1 수식:
=SUM(INDIRECT("'"&A1&"'!B5:B10")) -
인사이트: SUM 함수는 INDIRECT가 반환하는 B5:B10 이라는 실제 범위를 인수로 받아 합계를 계산합니다.
3.2. 동적 VLOOKUP 참조 시트 지정
VLOOKUP을 사용할 때, 조회할 자료 범위가 시트별로 나뉘어 있을 경우 유용합니다.
-
목표: A1 셀의 시트(‘1월’)에서 B2 셀의 키워드를 VLOOKUP으로 찾습니다.
-
수식:
=VLOOKUP(B2, INDIRECT("'"&A1&"'!A:Z"), 5, FALSE)-
활용: VLOOKUP의 두 번째 인수(조회할 범위)를 INDIRECT로 지정하여, A1 셀의 값에 따라 VLOOKUP이 조회하는 시트가 실시간으로 바뀝니다.
-
4. INDIRECT 함수 사용 시 주의사항 및 안정성 확보
INDIRECT 함수는 강력한 만큼, 일반 함수와 달리 몇 가지 제약과 주의사항이 있습니다.
4.1. ARRAYFORMULA와의 충돌 (단일 셀 전용)
INDIRECT 함수는 ARRAYFORMULA와 결합하여 배열로 확장되는 것을 지원하지 않습니다. 따라서 여러 시트의 자료를 집계할 때, INDIRECT 수식을 각 행에 수동으로 입력하거나 드래그하여 확장해야 합니다. (INDIRECT의 결과 자체가 배열이 아닌 텍스트를 참조로 변환하는 ‘실제 참조’이기 때문입니다.)
4.2. IFERROR를 이용한 오류 방지
INDIRECT 함수는 참조하려는 시트 이름이 잘못되었거나, 셀 주소가 존재하지 않을 경우 #REF! 오류를 반환합니다. 이는 마스터 시트의 가독성을 해치므로 반드시 오류 처리가 필요합니다.
-
오류 처리 수식:
=IFERROR(INDIRECT("'"&A1&"'!B5"), "시트 없음") -
활용: ‘3월’ 시트가 존재하지 않을 경우, 수식은 오류 대신 ‘시트 없음’이라는 메시지를 반환하여 보고서의 안정성을 높입니다.
4.3. 시트 이름의 특수 문자 처리
시트 이름에 공백이나 특수 문자가 포함되어 있을 경우, 일반 시트 참조와 마찬가지로 **작은따옴표(')**로 감싸주어야 합니다.
-
예시: 시트 이름이 **”1월 보고서”**일 경우, 참조는
'1월 보고서'!B5가 되어야 합니다. -
INDIRECT 구현:
=INDIRECT("'" & A1 & "'!B5")(INDIRECT 수식 내에서 A1 값의 앞뒤에 작은따옴표와 느낌표를 텍스트로 결합)
결론: 자료 관리의 복잡도를 획기적으로 낮추다
구글 시트의 INDIRECT 함수는 텍스트를 동적인 참조로 변환하는 독보적인 기능을 제공하여, 수백 개의 시트로 분산된 자료를 단 하나의 마스터 시트에서 효율적으로 통합하고 관리할 수 있게 해줍니다. 시트 이름이나 셀 주소를 수동으로 수정할 필요 없이, 목록만 변경하면 전체 보고서가 자동으로 업데이트됩니다.