GoogleスプレッドシートのIMPORTRANGE関数の使い方|別ファイルのデータ参照から応用テクニックまで徹底解説
「別のスプレッドシートのデータを自動で取り込みたい」「マスターデータを複数のファイルで共有したい」——そんなときに使うのがIMPORTRANGE関数です。Googleスプレッドシートでしかできないこの関数を使えば、異なるファイル間でデータをリアルタイムに同期させることができます。この記事では基本の使い方からQUERY関数との組み合わせ・注意すべき制限まで詳しく解説します。
IMPORTRANGE関数とは?
IMPORTRANGE関数は、別のGoogleスプレッドシートファイルから指定した範囲のデータを自動的に取得できる関数です。参照元ファイルが更新されると、取得先にも自動で反映されます。Excelにはない、Googleスプレッドシート独自の機能です。
- 複数のファイルに分かれたデータを1か所に集約できる
- マスターデータを他のファイルで参照・共有できる
- 参照元が更新されると自動的に同期される
- QUERY・FILTER関数と組み合わせて絞り込みや集計もできる
IMPORTRANGE関数の書き方(構文)
=IMPORTRANGE("スプレッドシートのURL", "シート名!セル範囲")
| 引数 | 説明 | 省略 |
|---|---|---|
| スプレッドシートのURL | 参照先ファイルのURL全体、またはスプレッドシートID(d/〇〇〇/の〇〇〇部分) | 必須 |
| シート名!セル範囲 | 参照するシート名と範囲(例: “売上データ!A1:D100″) | 必須 |
URLとスプレッドシートIDの指定方法
第1引数にはURLとスプレッドシートIDのどちらも使えます。スプレッドシートIDの方が短く書けてURL変更の影響を受けません。
URL全体を使う場合
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/ABC123xyz/edit", "売上データ!A1:D100")
スプレッドシートIDだけを使う場合(推奨)
=IMPORTRANGE("ABC123xyz", "売上データ!A1:D100")
スプレッドシートIDはURLの https://docs.google.com/spreadsheets/d/ と /edit の間の文字列です。
初回のアクセス許可の設定
初めてIMPORTRANGEを使うと、セルに「#REF!」エラーが表示され「アクセスを許可」ボタンが現れます。これはセキュリティ上の確認で、必ずクリックする必要があります。
- IMPORTRANGE関数を入力してEnterを押す
- セルをクリックして「アクセスを許可」ボタンをクリック
- これ以降は自動的にデータが取得されます
⚠️ アクセス許可は「ファイルの組み合わせごと」に1回だけ必要です。同じファイルを複数の箇所で参照している場合でも、1回許可すれば以降は自動的に取得されます。
基本的な使い方
=IMPORTRANGE("ABC123xyz", "売上データ!A1:D100")
「ABC123xyz」というIDのスプレッドシートの「売上データ」シートのA1:D100を取得します。データは読み取り専用で表示されます(取得先のセルに直接入力はできません)。
名前付き範囲を使う方法(応用①)
参照元のスプレッドシートで「名前付き範囲」を設定しておくと、IMPORTRANGE関数をよりシンプルに書けます。データ範囲が変わっても参照元の名前付き範囲を更新するだけで済みます。
名前付き範囲の設定方法(参照元ファイルで操作)
- 参照元ファイルで対象範囲を選択
- メニューの「データ」→「名前付き範囲」をクリック
- 名前(例:
売上マスタ)を入力して「完了」
名前付き範囲を使ったIMPORTRANGE
=IMPORTRANGE("ABC123xyz", "売上マスタ")
シート名!セル範囲の代わりに名前付き範囲の名前を指定するだけです。データ範囲が広がっても名前付き範囲の定義を更新すれば自動的に反映されます。
QUERY関数との組み合わせ(応用②)
QUERY関数の中にIMPORTRANGEをネストすると、別ファイルのデータを取得しながら同時に絞り込み・集計・並び替えまで行えます。
=QUERY(IMPORTRANGE("ABC123xyz", "売上データ!A1:D100"), "SELECT Col1, Col2, Col4 WHERE Col3 > 100 ORDER BY Col4 DESC", 1)
⚠️ 重要:QUERYとIMPORTRANGEを組み合わせる際は、列をA・B・Cではなく Col1・Col2・Col3 と指定します。IMPORTRANGEで取得したデータは独立した仮想テーブルとして扱われるため、列記号ではなく列番号形式を使う必要があります。
| 通常のQUERY | IMPORTRANGE と組み合わせたQUERY |
|---|---|
| SELECT A, B WHERE C > 100 | SELECT Col1, Col2 WHERE Col3 > 100 |
| ORDER BY D DESC | ORDER BY Col4 DESC |
| GROUP BY A | GROUP BY Col1 |
FILTER関数との組み合わせ(応用③)
FILTER関数と組み合わせると、条件に一致する行だけを抽出できます。QUERYよりシンプルな条件で使いやすいのが特長です。
=FILTER(IMPORTRANGE("ABC123xyz", "売上データ!A1:D100"), IMPORTRANGE("ABC123xyz", "売上データ!C1:C100") = "東京")
C列が「東京」の行だけを抽出する例です。IMPORTRANGEを2回書く必要があります(データ範囲と条件範囲)。
注意すべき制限事項
| 制限事項 | 詳細 |
|---|---|
| データサイズの上限 | 1回のリクエストで取得できるデータは最大10MB。大量データの場合はエラーになることがある |
| 参照元ファイル数の目安 | 1つのシートから50ファイル以上を参照するとパフォーマンスが低下する可能性がある |
| 書式は引き継がれない | データのみ取得。参照元の色・フォント・罫線などの書式は反映されない |
| 読み取り専用 | IMPORTRANGE で取得したセルには直接入力できない |
| SUMIF等の一部関数非対応 | IMPORTRANGEの結果をSUMIF関数の条件範囲に直接使えない場合がある |
| 更新の遅延 | 参照元が更新されてから反映されるまで数秒〜数分の遅延が生じることがある |
| チェーン接続の遅延 | A→B→CのようにIMPORTRANGEを連鎖させると遅延が累積する |
パフォーマンス改善のコツ:大量データを取得してから集計するよりも、参照元ファイルで集計した結果の数値だけをIMPORTRANGEで取得する方が処理が速くなります。
よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| #REF!(初回) | アクセス許可が未設定 | セルをクリックして「アクセスを許可」をクリック |
| #REF!(URLエラー) | URLまたはIDが間違っている | URLをコピー&ペーストして確認。ダブルクォートで正しく囲む |
| #REF!(削除済み) | 参照元のファイルが削除された・アクセス権を失った | 参照元ファイルの存在とアクセス権を確認する |
| #N/A | シート名が間違っている(スペル・スペースの違いなど) | シート名タブをダブルクリックして正確なスペルを確認 |
| 読み込み中のまま | 参照元ファイルが大きい・ネットワーク問題 | しばらく待つ。大きい場合はデータ範囲を分割して取得 |
| データが更新されない | キャッシュが残っている | ブラウザを更新(F5)またはスプレッドシートを開き直す |
まとめ
IMPORTRANGE関数の使い方をまとめます。
- 基本形:=IMPORTRANGE(“ID or URL”, “シート名!範囲”) で別ファイルのデータを取得できる
- 初回のみ「アクセスを許可」が必要。以降は自動更新される
- 名前付き範囲を使うと数式がシンプルになりメンテナンスも楽
- QUERYと組み合わせるときは A・B ではなく Col1・Col2 形式で列を指定する
- 書式は引き継がれない・読み取り専用・10MB上限などの制限を把握しておく
- 大量データを集計する場合は参照元で集計してから数値だけをIMPORTするとパフォーマンスが上がる
IMPORTRANGE関数はGoogleスプレッドシートを「チームで使うデータ基盤」にするための重要な機能です。QUERY・FILTER関数との組み合わせを覚えると、ファイルをまたいだ高度なデータ管理ができるようになります。