複数のスプレッドシートからデータを集めて1つのシートに統合したいとき、IMPORTRANGE関数を何度も使う方法ではシートが重くなり、更新も遅くなりがちです。特に、元データの行数が増えるたびに個別のIMPORTRANGEを調整する手間も発生します。この記事では、複数のIMPORTRANGEを効率的に連結する方法を、具体的な関数の組み合わせとともに解説します。縦方向や横方向の連結、QUERY関数を使ったフィルタリングまで、現場で使えるベストプラクティスをご紹介します。
【要点】複数IMPORTRANGEを1つにまとめるテクニック
- QUERY + {} で縦連結: =QUERY({IMPORTRANGE(…); IMPORTRANGE(…)}, “SELECT * WHERE Col1 IS NOT NULL”) で複数シートのデータを縦に積み上げます。
- {} で横連結: ={IMPORTRANGE(…), IMPORTRANGE(…)} で列方向に結合でき、列数が異なる場合はエラーになるため注意が必要です。
- ARRAYFORMULA で列を補完: =ARRAYFORMULA(IF(ISBLANK(A2:A), , IMPORTRANGE(…))) のように条件付きで読み込むことで、不要なセルの読み込みを抑えます。
ADVERTISEMENT
目次
IMPORTRANGEを連結する前に知っておくべき仕組み
IMPORTRANGE関数は他のスプレッドシートからデータをインポートする便利な関数ですが、1回の関数呼び出しで1つの範囲しか指定できません。複数のファイルやシートからデータを集めるには、複数のIMPORTRANGEを記述し、それらを配列リテラル({})やQUERY関数で結合する必要があります。ただし、IMPORTRANGEには読み込み制限があります。1つのスプレッドシートで大量のIMPORTRANGEを使うと、再計算が遅くなったり、セルあたりの文字数制限に引っかかったりします。連結時の最大のポイントは、無駄なセルを読み込まないことと、結合後のデータをシンプルに保つことです。また、IMPORTRANGEは最初のアクセス時に権限承認が必要です。連結前に各シートのインポートが正常に動作していることを確認しましょう。
複数のIMPORTRANGEを縦方向に連結する手順
異なるシートから同じ構造のデータを縦に並べたい場合、QUERY関数と配列リテラルの組み合わせが最もシンプルです。以下の手順で行います。
- 各IMPORTRANGEが正常に動作するか確認する
まず、個別のIMPORTRANGEをセルに入力し、権限を承認します。例えば、=IMPORTRANGE(“スプレッドシートURL”, “シート1!A:F”) のようにします。データが表示されれば準備完了です。 - QUERY関数を記述する
新しいセルに以下の数式を入力します。=QUERY({IMPORTRANGE("URL1", "Sheet1!A:F"); IMPORTRANGE("URL2", "Sheet1!A:F")}, "SELECT * WHERE Col1 IS NOT NULL")
セミコロン(;)は縦方向の結合を意味します。WHERE句で空行を除外することで、データが途切れなく表示されます。 - 列数を統一する
すべてのIMPORTRANGEで同じ列数・順序になっていることを確認します。列数が異なるとQUERYがエラーになります。もし列数が違う場合は、QUERYのSELECT句で列をそろえるか、ARRAYFORMULAで補完します。
複数のIMPORTRANGEを横方向に連結する手順
異なるデータを横に並べたい場合は、配列リテラルをカンマでつなぎます。ただし、行数が一致していないとエラーになるため、事前に行数をそろえる工夫が必要です。
- 両方の行数をそろえる
行数が少ない方のIMPORTRANGEに空行を追加するか、QUERYで行数を制限します。例えば、下記のように行数を固定します。=IMPORTRANGE("URL", "Sheet1!A1:A10")のように範囲を指定するか、QUERYで行数を絞ります。 - 横連結の数式を入力する
カンマ区切りで配列を結合します。={IMPORTRANGE("URL1", "Sheet1!A1:A10"), IMPORTRANGE("URL2", "Sheet1!B1:B10")}
これで、左側のデータと右側のデータが横に並びます。 - 列数が不揃いの場合はQUERYで調整
列数が異なる場合、QUERY関数のSELECT句で特定の列だけを抽出してから結合します。例えば、=QUERY(IMPORTRANGE(...), "SELECT Col1, Col2, Col3")とすると3列に統一できます。
ADVERTISEMENT
QUERYとARRAYFORMULAを組み合わせた高度な連結
IMPORTRANGEを複数使うと、空白セルまでインポートしてシートが重くなることがあります。ARRAYFORMULAとIFを組み合わせて、必要な行だけ読み込むテクニックを紹介します。
条件付きインポートで無駄を減らす
元データの特定の条件を満たす行だけをインポートしたい場合は、QUERYのWHERE句を使います。例えば、IMPORTRANGEで取得した範囲に対してQUERYをかける方法です。=QUERY(IMPORTRANGE("URL", "Sheet1!A:F"), "SELECT * WHERE Col1 = '東京'")
これで、東京のデータだけを抽出できます。複数のIMPORTRANGEを連結する場合も、各QUERYの結果を配列リテラルで結合します。
ARRAYFORMULAで自動的に行数を拡張する
IMPORTRANGEは参照範囲が固定されがちですが、ARRAYFORMULAを使うと元データが増えたときに行数が自動拡張されます。例えば、=ARRAYFORMULA(IMPORTRANGE("URL", "Sheet1!A:F")) とすると、元データの増減に追従します。ただし、この方法は大量データでは遅くなることがあるため、QUERYとの併用をおすすめします。
連結時に起こりやすいトラブルとその対処法
#REF!エラーが表示される
原因は、IMPORTRANGEの権限が承認されていないことです。まず各IMPORTRANGEを単独でセルに入力し、権限承認のプロンプトに従ってアクセスを許可してください。承認後は数式を連結に変更しても問題なく動きます。
データが表示されずに空白になる
IMPORTRANGEのURLまたはシート名・範囲が間違っている可能性があります。ダブルクォーテーションで囲まれたURLが正しいか、シート名にスペルミスがないかを確認します。また、インポート元のシートが削除されていないかもチェックしてください。
QUERYで「No matches」エラーが出る
QUERYのWHERE句で条件が厳しすぎるか、列指定が誤っています。WHERE句の条件を緩めてまず全体を表示し、その後条件を絞り込みます。また、IMPORTRANGEの結果は文字列として扱われるため、数値の比較は注意が必要です。
横連結で「#N/A」が大量に出る
横連結する配列の行数が一致していないと、足りない行に#N/Aが表示されます。行数が多い方に合わせて、少ない方をARRAYFORMULAやQUERYで拡張するか、IFERRORで#N/Aを空白に変換します。=ARRAYFORMULA(IF(ISBLANK(A1:A), , B1:B)) のようにして、元データの行数を基準に表示できます。
縦連結と横連結の比較
| 連結方向 | 使用関数 | メリット | デメリット |
|---|---|---|---|
| 縦方向 | QUERY + {} | 構造が同じデータを簡単に積み上げられる | 列数が異なるとエラーになる |
| 横方向 | {} カンマ区切り | 異なる種類のデータを並べて比較できる | 行数をそろえる必要があり、空白処理が煩雑 |
| 縦+横 (複合) | QUERY + {} を入れ子 | 柔軟なデータ統合が可能 | 数式が複雑で管理が難しくなる |
まとめ
複数のIMPORTRANGEを連結するには、QUERY関数と配列リテラルを組み合わせるのが最も実用的な方法です。縦方向にはセミコロン、横方向にはカンマを使い分け、QUERYのWHERE句で不要なデータを除外することで、軽量なデータ統合が実現できます。連結前に個別のIMPORTRANGEが正しく動作することを確認し、列数や行数のずれに注意すれば、エラーも最小限に抑えられます。さらに、ARRAYFORMULAやIFERRORを組み合わせることで、より堅牢なシートに仕上げられます。このテクニックを応用して、複数ソースからのデータ集計やレポート作成を効率化してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
