# Google Sheets 함수 마스터하기 (9/10): IMPORTRANGE - 여러 스프레드시트 연결하기 ## 이전 편 복습 8편에서는 FILTER와 SORT로 동적 데이터 필터링을 배웠습니다. 오늘은 여러 Google Sheets 파일을 연결하는 **IMPORTRANGE**를 알아봅니다! --- ## IMPORTRANGE란? IMPORTRANGE는 다른 Google Sheets 파일에서 데이터를 가져오는 함수입니다. 여러 팀이 각자의 시트를 관리하면서도 통합 대시보드를 만들 수 있게 해줍니다. ### 기본 문법 ``` =IMPORTRANGE(스프레드시트_URL, 범위_문자열) ``` | 인수 | 설명 | |------|------| | 스프레드시트_URL | 데이터를 가져올 파일의 URL | | 범위_문자열 | "시트명!셀범위" 형식 | --- ## 기본 사용법 ### Step 1: URL 확인 가져올 스프레드시트의 URL을 복사합니다: ``` https://docs.google.com/spreadsheets/d/1ABC...XYZ/edit ``` 필요한 부분은 `/d/`와 `/edit` 사이의 ID입니다: ``` 1ABC...XYZ ``` --- ### Step 2: 기본 수식 #### 전체 URL 사용 ``` =IMPORTRANGE("https://docs.google.com/spreadsheets/d/1ABC...XYZ/edit", "Sheet1!A1:D10") ``` #### 스프레드시트 ID만 사용 ``` =IMPORTRANGE("1ABC...XYZ", "Sheet1!A1:D10") ``` --- ### Step 3: 액세스 권한 허용 처음 IMPORTRANGE를 사용하면 `#REF!` 에러가 표시됩니다. 1. 셀을 클릭 2. "액세스 허용" 버튼 클릭 3. 허용하면 데이터가 표시됨 **중요**: 한 번 허용하면 해당 스프레드시트 쌍에 대해 다시 허용할 필요 없음 --- ## 실전 예제 ### 예제 1: 기본 데이터 가져오기 #### 원본 파일 (영업팀 매출 데이터) | 날짜 | 고객명 | 제품 | 금액 | |------|--------|------|------| | 2024-01-05 | A사 | 노트북 | 1500000 | | 2024-01-08 | B사 | 마우스 | 35000 | | 2024-01-12 | C사 | 키보드 | 89000 | #### 대시보드 파일에서 가져오기 ``` =IMPORTRANGE("영업팀_파일_URL", "매출!A1:D100") ``` --- ### 예제 2: 특정 시트 지정 #### 시트 이름에 공백이 있을 때 ``` =IMPORTRANGE("URL", "'2024년 매출'!A1:D100") ``` 시트 이름을 작은따옴표로 감싸기! --- ### 예제 3: 전체 열 가져오기 ``` =IMPORTRANGE("URL", "Sheet1!A:D") ``` A~D열 전체를 가져옴 (데이터가 추가되면 자동 반영) --- ## IMPORTRANGE + 다른 함수 조합 ### QUERY와 조합 가져온 데이터를 바로 필터링: ``` =QUERY( IMPORTRANGE("URL", "데이터!A1:F100"), "SELECT * WHERE Col3 = '서울'" ) ``` **주의**: IMPORTRANGE 결과는 열 이름 대신 Col1, Col2... 사용 --- ### FILTER와 조합 ``` =FILTER( IMPORTRANGE("URL", "데이터!A:F"), IMPORTRANGE("URL", "데이터!C:C") = "개발" ) ``` 개발팀 데이터만 가져오기 --- ### SORT와 조합 ``` =SORT( IMPORTRANGE("URL", "매출!A2:D100"), 4, FALSE ) ``` 금액(4번째 열) 내림차순으로 정렬 --- ### VLOOKUP과 조합 ``` =VLOOKUP(A2, IMPORTRANGE("제품마스터_URL", "제품!A:C"), 3, FALSE) ``` 다른 파일의 제품 마스터에서 가격 조회 --- ## 여러 파일 통합 ### 방법 1: 세로로 결합 ``` ={ IMPORTRANGE("서울_URL", "매출!A2:D100"); IMPORTRANGE("부산_URL", "매출!A2:D100"); IMPORTRANGE("대구_URL", "매출!A2:D100") } ``` 세 파일의 데이터를 세로로 합치기 --- ### 방법 2: 가로로 결합 ``` ={ IMPORTRANGE("기본정보_URL", "직원!A:C"), IMPORTRANGE("급여정보_URL", "급여!B:D") } ``` 직원 기본정보와 급여정보를 가로로 결합 --- ### 방법 3: 조건부 통합 ``` =FILTER( { IMPORTRANGE("서울_URL", "매출!A2:E100"); IMPORTRANGE("부산_URL", "매출!A2:E100") }, { IMPORTRANGE("서울_URL", "매출!D2:D100"); IMPORTRANGE("부산_URL", "매출!D2:D100") } > 1000000 ) ``` 100만원 이상 매출만 통합 --- ## Named Range (이름이 지정된 범위) 활용 ### 원본 파일에서 Named Range 설정 1. 범위 선택 2. 데이터 > 이름이 지정된 범위 3. 이름 입력: "SalesData" ### IMPORTRANGE에서 사용 ``` =IMPORTRANGE("URL", "SalesData") ``` 시트명과 범위 대신 이름만 사용! **장점**: - 원본 파일에서 범위가 변경되어도 자동 반영 - 수식이 더 깔끔함 --- ## 실무 시나리오 ### 시나리오 1: 부서별 예산 통합 관리 #### 구조 - 재무팀 마스터 파일 (통합 대시보드) - 개발팀 예산 파일 - 마케팅팀 예산 파일 - 영업팀 예산 파일 #### 재무팀 마스터 파일 수식 ``` =QUERY( { IMPORTRANGE("개발팀_URL", "예산!A2:E100"); IMPORTRANGE("마케팅팀_URL", "예산!A2:E100"); IMPORTRANGE("영업팀_URL", "예산!A2:E100") }, "SELECT Col1, SUM(Col4) GROUP BY Col1 LABEL SUM(Col4) '총예산'" ) ``` 각 팀의 예산을 자동 집계! --- ### 시나리오 2: 재고 관리 시스템 #### 구조 - 본사 재고 마스터 - 서울 창고 파일 - 부산 창고 파일 #### 본사 마스터에서 전체 재고 합계 ``` =IFERROR( VLOOKUP(A2, IMPORTRANGE("서울창고_URL", "재고!A:B"), 2, FALSE), 0) + IFERROR( VLOOKUP(A2, IMPORTRANGE("부산창고_URL", "재고!A:B"), 2, FALSE), 0) ``` 각 제품의 전체 재고 합계 --- ### 시나리오 3: 프로젝트 타임라인 통합 ``` =SORT( FILTER( { IMPORTRANGE("프로젝트A_URL", "타임라인!A2:F50"); IMPORTRANGE("프로젝트B_URL", "타임라인!A2:F50"); IMPORTRANGE("프로젝트C_URL", "타임라인!A2:F50") }, { IMPORTRANGE("프로젝트A_URL", "타임라인!E2:E50"); IMPORTRANGE("프로젝트B_URL", "타임라인!E2:E50"); IMPORTRANGE("프로젝트C_URL", "타임라인!E2:E50") } = "진행중" ), 3, TRUE ) ``` 모든 프로젝트의 "진행중" 작업을 마감일 순으로 정렬 --- ## 성능 최적화 ### 1. 필요한 범위만 지정 ``` // 느림 - 전체 열 =IMPORTRANGE("URL", "Sheet1!A:Z") // 빠름 - 필요한 범위만 =IMPORTRANGE("URL", "Sheet1!A1:D100") ``` --- ### 2. 헬퍼 시트 사용 자주 참조하는 데이터는 별도 시트에 한 번만 가져오기: **헬퍼 시트**: ``` =IMPORTRANGE("URL", "마스터!A:E") ``` **다른 시트에서는 헬퍼 시트 참조**: ``` =VLOOKUP(A2, 헬퍼시트!A:E, 3, FALSE) ``` IMPORTRANGE를 여러 번 호출하는 것보다 효율적! --- ### 3. 데이터 새로고침 주기 IMPORTRANGE는 자동으로 새로고침되지만, 지연이 있을 수 있습니다. **즉시 새로고침이 필요하면**: - 셀을 선택하고 Enter - 또는 수식을 수정했다가 되돌리기 --- ## 에러 처리 ### #REF! 에러 **원인 1**: 액세스 권한 미허용 - **해결**: 셀 클릭 → "액세스 허용" **원인 2**: 원본 파일 삭제/이동 - **해결**: URL 확인 및 수정 **원인 3**: 시트/범위 이름 오류 - **해결**: 원본 파일에서 정확한 이름 확인 --- ### #VALUE! 에러 **원인**: 잘못된 URL 또는 범위 형식 - **해결**: URL과 범위 문법 확인 --- ### 빈 결과 **원인**: 원본에 데이터 없음 - **해결**: 원본 파일 확인 --- ## 보안 고려사항 ### 1. 권한 관리 IMPORTRANGE로 연결하면: - 연결을 허용한 사람의 권한으로 데이터 접근 - 원본 파일의 읽기 권한이 있어야 함 ### 2. 민감한 데이터 - 급여, 개인정보 등 민감한 데이터 주의 - 필요한 열만 가져오기 - 정기적으로 연결된 파일 검토 ### 3. 공유 설정 원본 파일 소유자가 공유를 중단하면 IMPORTRANGE도 중단됨 --- ## 자주 하는 실수 ### 1. 시트 이름 오타 ``` // 잘못됨 =IMPORTRANGE("URL", "Shee1!A:D") // 올바름 =IMPORTRANGE("URL", "Sheet1!A:D") ``` ### 2. 범위 형식 ``` // 잘못됨 =IMPORTRANGE("URL", A1:D10) // 올바름 =IMPORTRANGE("URL", "Sheet1!A1:D10") ``` 범위는 문자열로! ### 3. 중첩 따옴표 ``` // 올바름 =IMPORTRANGE("URL", "'시트 이름'!A:D") ``` 공백이 있는 시트 이름은 작은따옴표로 감싸기 --- ## 정리 | 상황 | 수식 | |------|------| | 기본 가져오기 | `=IMPORTRANGE("URL", "시트!A1:D100")` | | Named Range | `=IMPORTRANGE("URL", "범위이름")` | | QUERY 조합 | `=QUERY(IMPORTRANGE(...), "SELECT *")` | | FILTER 조합 | `=FILTER(IMPORTRANGE(...), 조건)` | | 세로 결합 | `={IMPORTRANGE(...); IMPORTRANGE(...)}` | | 가로 결합 | `={IMPORTRANGE(...), IMPORTRANGE(...)}` | --- ## 핵심 포인트 1. **다른 파일의 데이터를 실시간 연동** 2. **처음 사용 시 액세스 허용 필요** 3. **다른 함수와 조합**으로 강력한 통합 가능 4. **Named Range**로 유지보수 편리 5. **성능 최적화**를 위해 필요한 범위만 지정 6. **보안 고려**하여 민감한 데이터 관리 --- ## 다음 편 예고 **[10편: 고급 팁 & 함수 조합]**에서는 지금까지 배운 모든 함수를 조합하여 실무에서 바로 사용할 수 있는 고급 패턴을 총정리합니다! --- *이 글이 도움이 되셨다면 시리즈의 다른 글도 확인해 보세요!*