Googleスプレッドシートで別ファイルのデータを集計する際、手作業による転記の手間に悩まされた経験はないでしょうか。関数を用いて正しい設定や手順を行えば、複数ファイルにまたがるデータを自動で同期する仕組みを構築可能です。
この記事では、IMPORTRANGEの基本的な構文を指定する手順に加え、エラーの対処法や他の関数と組み合わせる実践的な方法まで詳しく解説します。複数ファイルを用いたデータ管理を効率化したい方は、ぜひ参考にしてください。
目次
- IMPORTRANGE関数の基本的な使い方
- 別のスプレッドシートURLを指定する
- 読み込むシートと範囲を指定する
- IMPORTRANGE関数で発生するエラーの対処法
- アクセス許可を求める#REF!エラーを解消する
- 参照範囲が広すぎるエラーを解消する
- 数式の解析エラーを解消する
- IMPORTRANGE関数と他の関数を組み合わせる方法
- VLOOKUP関数で別ファイルのデータを検索する
- QUERY関数で必要なデータだけを抽出する
- IMPORTRANGE関数の読み込みが遅い場合の改善策
- 参照するデータ範囲を狭める
- Google Apps Scriptで代替する
- IMPORTRANGEの使い方に関するよくある質問
- 同一のスプレッドシート内の別シートも参照できますか?
- IMPORTRANGE関数で読み込めるデータ量に上限はありますか?
IMPORTRANGE関数の基本的な使い方
IMPORTRANGEは、別のファイルから指定した範囲のデータを読み込むための関数です。関数を正しく機能させるためには、以下の2つの引数を順番に指定するルールがあります。
- 別のスプレッドシートURLを指定する
- 読み込むシートと範囲を指定する
引数に指定する要素とそれぞれの役割は、以下の通りです。
| 引数 | 指定内容 |
|---|---|
| 第一引数 | 読み込み元のスプレッドシートURL |
| 第二引数 | 読み込むシート名とセルの範囲 |
これらの引数をカンマで区切り、それぞれをダブルクォーテーションで囲むのが基本的な記述ルールです。実際に入力する式は、以下のように記述します。
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit", "シート1!A1:C10")
数式中の「xxxxxxx…xxx」の部分は説明用のプレースホルダーのため、実際に使用する際は自分の環境にあるスプレッドシートのURLへ置き換えます。第一引数に読み込み元のスプレッドシートURL、第二引数に「シート名!セル範囲」を指定すると、別ファイルの「シート1」にあるA1からC10までのデータがそのまま読み込まれる仕組みです。
別のスプレッドシートURLを指定する
第一引数には、データを取得したい別ファイルのスプレッドシートURLを設定します。式に直接記述する場合は、ブラウザのアドレスバーに表示されているURL全体をダブルクォーテーションで囲んで指定してください。
URLをあらかじめ別のセルへ入力してあれば、そのセルを参照する形で指定することも可能です。数式を後から見直す際にも、セル参照のほうが管理しやすくなります。
URLを指定する際のポイントは、以下の通りです。
- 式に直接記述する場合はURL全体をダブルクォーテーションで囲む
- URLの代わりにスプレッドシートキーのみの指定も可能
- URLを入力したセルを参照して指定することも可能
- 編集権限または閲覧権限があるファイルのURLを使用する
式に直接URLを記述する場合、URL全体をダブルクォーテーションで囲む処理を忘れるとエラーが発生する原因となります。一方、URLを保存したセルを参照する場合は、セル番地をそのまま指定するためダブルクォーテーションは不要です。
また、URLの中央にあるランダムな文字列を抽出し、スプレッドシートキーとして指定する方式にも対応可能です。
読み込むシートと範囲を指定する
第二引数では、読み込み元ファイル内のどのシートのどのセル範囲を取得するかを定義します。シート名とセル範囲をエクスクラメーションマーク(!)で繋ぐのが基本形式となります。
範囲を指定する際の具体的な記述ルールは、以下の通りです。
- シート名とセル範囲をエクスクラメーションマークで区切る
- シート名にスペースが含まれる場合はシングルクォーテーションで囲む
- 式に直接記述する場合は引数全体をダブルクォーテーションで囲む
式に直接「シート名!セル範囲」を記述する場合はダブルクォーテーションで囲む必要がありますが、範囲指定を入力したセルを参照する場合は、第一引数のURLと同様にセル番地をそのまま指定するためダブルクォーテーションは不要です。シート名を省略した場合は、読み込み元ファイルの最も左にあるシートが自動的に参照される仕様のため、あらかじめ確認しておきましょう。
データ量が多い場合は、必要な列や行のみに参照するデータ範囲を絞り込むと動作が安定する傾向にあります。
IMPORTRANGE関数で発生するエラーの対処法
IMPORTRANGE関数を使用する際、アクセス許可や入力ミスが原因でエラーが発生することがあります。正しい対処法を理解すれば、スムーズにデータを読み込める仕組みです。
発生しやすいエラーと主な対処法は、以下の通りです。
| エラーの症状 | 主な原因と対処法 |
|---|---|
| #REF!エラー | アクセス権限の未付与。手動でアクセスを許可する |
| 結果が大きすぎます | 受信データ量が上限を超過。範囲を狭めるか分割する |
| 数式の解析エラー | 構文エラー。ダブルクォーテーションの抜け等を確認する |
エラーの種類によって、原因や対処法が異なるため、表示された症状に応じて確認していきましょう。あらかじめ対処法を把握しておくと、エラー発生時にも落ち着いて対応できます。
アクセス許可を求める#REF!エラーを解消する
IMPORTRANGE関数を初めて設定した際、セルに「#REF!」と表示されるのはアクセス権限の未付与が原因です。Google Docs Editors Helpでは、権限について、次のように説明しています。
Spreadsheets must be explicitly granted permission to pull data from other spreadsheets using IMPORTRANGE .
出典:Google Docs Editors Help アクセス権限・許可の仕様
つまり、自動でデータが読み込まれるわけではなく、初回のみ手動で連携を承認する仕様です。セルにカーソルを合わせると、「アクセスを許可」というボタンが表示されます。
具体的な手順は、以下の通りです。
- エラーが出ているセルをクリックする
- 表示されたポップアップの「アクセスを許可」を選択する
- データの読み込みが完了するのを待つ
ボタンを押すだけで連携が完了し、エラーを解消できます。以降は同じ範囲を参照する数式であれば、再び許可を求められることはありません。
参照範囲が広すぎるエラーを解消する
「結果が大きすぎます」というエラーが出た場合、IMPORTRANGE関数が1回のリクエストで受信できるデータ量の上限(10MB)を超えている状態です。対象範囲を数万行から数千行へ減らすなど、参照する領域を絞り込んで受信データ量を抑える必要があります。
主な対処法は、以下の通りです。
- 列全体(A:Aなど)の指定を避け、必要な行数(A1:A1000など)に絞る
- 不要な空白セルや列が含まれていないか確認する
- データ量が膨大な場合は、ファイル自体を複数に分割する
必要なデータだけを正確に指定し、受信するデータ量を上限内に収めることによって、読み込みの負担を軽減できます。
数式の解析エラーを解消する
「数式の解析エラー」は、関数の構文や記号の入力ミスによって発生します。スプレッドシートURLや範囲指定の文字列を、正しくダブルクォーテーションで囲んでいないことが主な原因です。
よくあるミスと修正方法は、以下の表にまとめました。
| ミスの種類 | 内容と修正方法 |
|---|---|
| ダブルクォーテーションの抜け | URLやシート名を「"」で囲んで文字列として指定する |
| スペルミスや全角入力 | 関数名や記号が半角英数になっているか確認する |
| カンマの抜けや誤入力 | 引数の区切りに正しく半角カンマ(,)を使用する |
これらを修正すればエラーが解消され、正常にデータが参照できる仕組みです。入力後にエラーが再発する場合は、全角文字や余分な空白が紛れ込んでいないか確認してください。
IMPORTRANGE関数と他の関数を組み合わせる方法
IMPORTRANGE関数は単独で使うだけではなく、他の関数と組み合わせることでさらに高度なデータ処理が可能です。別のスプレッドシートから読み込んだデータを条件付きで抽出したり、検索したりする実務的なテクニックを解説します。
なお、以降の数式例に含まれるURL部分は説明用のプレースホルダーのため、実際に使用する際は自分のスプレッドシートURLへ置き換えてください。
組み合わせる関数の主な目的は、以下の通りです。
| 関数 | 組み合わせる目的 |
|---|---|
| VLOOKUP関数 | 別ファイルにあるマスターデータから特定の値を検索して表示する |
| QUERY関数 | 別ファイルのデータから条件に一致する行や列だけを抽出・並べ替えする |
用途に合わせて関数を使い分けることで、業務効率が大きく向上します。検索したいのか抽出したいのかが、選択の基準です。
VLOOKUP関数で別ファイルのデータを検索する
VLOOKUP関数とIMPORTRANGE関数を組み合わせると、別ファイルで管理している顧客名簿や商品マスターなどを検索キーにしてデータを取得できます。データを1箇所に集約して管理したい場合に役立つ手法です。
まず、VLOOKUP関数の第2引数である検索範囲の指定部分に、IMPORTRANGE関数を挿入します。これにより、別ファイルにある指定範囲が仮想的な表として扱われ、検索対象として機能する仕組みです。
設定の基本的な流れは、次の3ステップで進めます。
- 検索キーを設定してVLOOKUP関数を記述する
- 検索範囲の部分にIMPORTRANGE関数を挿入する
- 列番号と検索の型を指定して関数を完成させる
具体的な式は、次のとおりです。実際の値は、ご自身のスプレッドシートの環境に合わせて、A2セルや顧客名簿シートの名称を書き換えてください。
=VLOOKUP(A2, IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit", "顧客名簿!A:C"), 2, FALSE)
検索キーであるA2セルの値を、別ファイルの「顧客名簿」シートA列からC列の範囲で検索し、一致した行の2列目にある値を表示します。組み合わせる前に、単独のIMPORTRANGE関数で一度データを読み込み、アクセス許可を済ませておく必要があります。
許可がない状態だと、VLOOKUP関数全体がエラーになってしまうため注意しましょう。先に単体で動作確認しておくと、原因の切り分けがしやすくなります。
QUERY関数で必要なデータだけを抽出する
QUERY関数の中にIMPORTRANGE関数を組み込むと、大量のデータから必要な列や特定の条件を満たす行だけを絞り込んで表示できます。ただし、IMPORTRANGE自体は指定した範囲のデータを一度すべて取得したうえでQUERYが絞り込む処理のため、読み込みの負荷そのものを軽減する手法ではありません。
QUERY関数の第1引数であるデータ範囲にIMPORTRANGE関数を指定し、第2引数で抽出条件を記述します。別ファイルから読み込んだデータを操作する場合、列の指定はアルファベットではなく、列番号で記述するのが特徴です。
具体的な式は、次のように記述しました。条件式の書き方は通常のQUERY関数と変わらないため、既にQUERY関数を使ったことがある場合はそのまま応用可能です。
=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit", "売上!A:D"), "select Col1, Col3 where Col4 = '東京店'", 1)
別ファイルの「売上」シートA列からD列を読み込み、Col4が「東京店」の行に絞ってCol1とCol3を表示します。IMPORTRANGE自体の負荷を抑えたい場合は、参照する範囲自体を狭めるか、参照元のシートであらかじめ集計・抽出しておく必要があります。
列の指定方法の違いは、以下の通りです。
| 条件 | 記述方法の違い |
|---|---|
| 同一ファイル内のQUERY関数 |
select A, Bのように列記号で指定する |
| 別ファイルを読み込む場合 |
select Col1, Col2のように列番号で指定する |
QUERY関数を活用すれば、月別の売上データから特定店舗の記録だけを抽出するといった柔軟な集計が実現します。日々のデータ集計作業を自動化するのに適したテクニックです。
IMPORTRANGE関数の読み込みが遅い場合の改善策
IMPORTRANGE関数を使って大量のデータを読み込むと、スプレッドシートの動作が重くなる場合があります。このようなパフォーマンスの低下を防ぐための主な改善策は、以下の通りです。
| 改善策 | 特徴と適した状況 |
|---|---|
| 参照するデータ範囲を狭める | 必要な列や行だけを指定する手軽な方法。 |
| Google Apps Scriptで代替する | 高速化や定期的な同期が必要な場合。 |
自身のシートの用途や扱うデータ量に合わせてこれらの手法を選択し、スプレッドシート全体の動作を最適化する仕組みを構築します。
参照するデータ範囲を狭める
スプレッドシートの読み込みが遅い場合、最初に試すべきなのはIMPORTRANGE関数で指定するデータ範囲の見直しです。
シート全体を読み込むのではなく、必要な範囲に限定することによって、処理の負担を大幅に軽減できます。具体的な見直しのポイントは、以下の通りです。
- 列全体の指定を避け、必要な列に絞る
- 空白部分を含まないよう行番号まで指定
- 集計済みの小さなデータを参照先にする
あらかじめ参照元のファイル側でデータを集計または抽出しておき、その結果のみを読み込む仕組みを作るのも効果的な手法と言えます。
Google Apps Scriptで代替する
データ量が非常に多い場合やリアルタイムの更新が不要な場合は、IMPORTRANGE関数の代わりにGoogle Apps Scriptを活用する手法が有効です。
関数による常時同期を止め、スクリプトで定期的にデータをコピーする仕組みに変更します。Google Apps Scriptを使用する主なメリットは、次の3点が挙げられます。
- 読み込み回数が減り、動作が軽くなる
- トリガー機能を用いて自動更新を設定
- データ加工をインポートと同時に実行
関数の計算に依存しないため、大量のデータを扱う業務の自動化に適したアプローチです。ただし、Google Apps Scriptには1日あたりの実行時間や呼び出し回数に割り当て制限があり、初回実行時にはスクリプトへのアクセス許可を承認する作業も必要です。
トリガーが失敗した際に気付ける仕組み(実行ログの確認や通知設定)を用意したうえで、更新頻度を制御したい場合の代替案として検討しましょう。
IMPORTRANGEの使い方に関するよくある質問
同一のスプレッドシート内の別シートも参照できますか?
同一のファイル内にある別シートのデータも、IMPORTRANGE関数で参照できます。しかし、通常はシート名とセル範囲を直接指定する方が効率的です。
直接参照で対応できる場面であえて関数を使うと、動作が遅くなる原因となります。別のファイルからデータを集約する場面に限定して、活用するのが基本です。
IMPORTRANGE関数で読み込めるデータ量に上限はありますか?
Google公式ヘルプ(Google Docs Editors Help IMPORTRANGE関数)では、IMPORTRANGE関数が1回のリクエストで受信できるデータ量の上限を10MBまでと明記しています。上限を超えると、参照する範囲が広すぎることが原因でエラーが発生します。
受信するデータ量が10MBの上限を超えると、「結果が大きすぎます」というエラーとなってデータが表示されない仕様です。必要な列だけを絞り込むなど、範囲を最小限に抑える工夫を取り入れ、受信データ量を上限内に収めましょう。
ITやプログラミングに関するコラム
【Python】FastAPIで料金プラン見積もりシミュレーターを作ってみた
【Python】pandasとmatplotlibで在庫データのABC分析と構成比を可視化してみた
【Python】Flaskで社内FAQをカテゴリ検索できるWebアプリを作ってみた
【Python】argparseでJSON整形・構文検証・キー検索CLIを試してみた
【Python】NumPyとmatplotlibでモンテカルロ法による円周率推定と収束過程の可視化を試してみた
【Python】Playwrightでスクレイピングを試してみた
【CSS】notで複数の件を除外する方法
【Git】remote設定を変更する方法
【VBA】コメントアウトを設定する方法
x86とx64の違いを分かりやすく解説
ITやプログラミングに関するニュース
VercelがAI GatewayにSeedream 5.0 Proを追加、AI SDKのモデル指定で画像生成と編集が可能に
AWSがAmazon LocationのPlaces APIを強化、住所表記の指定と移動手段別の検索が可能に
VercelがトレースにTree・Waterfallビューを追加、ログ画面で処理の階層と所要時間を確認可能に
Googleがエージェント評価の再考を提唱、難易度を情報量で測るDiscovery Benchを解説
Google CloudがCloud Runサンドボックスを公開プレビューで提供、サービスヘルスは一般提供に
Google Cloud EMEAが英国金融の重要第三者に指定、イングランド銀行・PRA・FCAの直接監督下に
AWS DMS Schema ConversionがSQL Serverのオフライン変換に対応、ソースDBへ接続せずスキーマを変換可能に
EC2 G7インスタンスが米国東部(バージニア北部)で利用可能に、G6比でAI推論性能が最大4.6倍
SageMaker HyperPodが継続プロビジョニングでのAMIベース構成に対応、S3のスクリプト管理なしでSlurmクラスターを作成可能に
AWSがEMR on EKSでSparkトラブルシューティングエージェントに対応、失敗ジョブの原因分析を自然言語で依頼可能に
