Googleスプレッドシートで複数シートのデータを統合する方法【QUERY関数で在庫リストをまとめる】

Googleスプレッドシートを使って業務の効率化を目指す方にとって、「複数シートにまたがったデータを1つにまとめたい」というニーズは多いです。この記事では、QUERY関数と波括弧 {} を組み合わせて、複数の在庫シートをひとつの「在庫リスト」シートにまとめる方法をステップ付きで解説します。
さらに、列構成が違うシートを結合するテクニックや、別ファイルの統合方法もご紹介します。


複数の在庫シートを1つに統合したいケース

例えば以下のような状況を想定してみましょう。

  • 「在庫リスト2024」シート:管理ID 商品名 種別 メーカー 入荷単価(円) 在庫数 最終入荷日など
  • 「在庫リスト2025」シート:商品コード 商品名 カテゴリ 単価(円) 在庫数 登録日など

これらのシートをまとめて、「在庫リスト」シートに統合表示したいというのが今回の目的です。


QUERY関数+ {範囲1; 範囲2} を使ったシンプルな統合方法

列構成が同じであれば、非常にシンプルな書き方で統合できます。

=QUERY({
'在庫リスト2024'!A2:C;
'在庫リスト2025'!A2:C
}, "where Col1 is not null", 0)

解説

  • {…; …}:縦方向にデータを結合する(UNION ALLのイメージ)
  • QUERY(...):SQLライクな構文で並び替え・抽出・フィルタリングが可能
  • "where Col1 is not null":1列目(商品名など)が空白でない行のみを抽出
  • 0:ヘッダーなしデータを扱う指定

列構成が異なる場合の対処法

「2024年」と「2025年」の在庫シートで、列数が異なるケースもあります。
このような場合は、不足している列に空白を埋めて列数を揃えることが重要です。

=QUERY({
{'在庫リスト2024'!A2:F, ARRAYFORMULA(REPT("", ROW('在庫リスト2024'!A2:A)))};
{ARRAYFORMULA(REPT("", ROW('在庫リスト2025'!A2:A))), '在庫リスト2025'!A2:C}
}, "where Col1 is not null", 0)

ポイント

  • ARRAYFORMULA(REPT("", ROW(...))):不足する列数分、空の列を挿入
  • 同じ列数にしてから {…; …} で縦に結合

IMPORTRANGE関数で別ファイルの在庫データも統合

別のスプレッドシートファイルからもデータを取り込んで統合したい場合は、IMPORTRANGE関数が便利です。

=QUERY({
IMPORTRANGE("ファイルID1", "在庫リスト2024!A2:F");
IMPORTRANGE("ファイルID2", "在庫リスト2025!A2:F")
}, "select * where Col1 is not null", 0)
  • ファイルIDはGoogleスプレッドシートのURLの一部を指定
  • 初回使用時は「アクセスを許可」する操作が必要です

QUERY関数によるデータ統合の便利な使い分け

方法説明
{範囲1; 範囲2}縦方向の結合(行の追加)
{範囲1, 範囲2}横方向の結合(列の追加)
QUERY(..., "where ...")条件抽出
QUERY(..., "group by")集計処理
QUERY(..., "pivot")ピボット集計

まとめ

  • QUERY関数と{...}の組み合わせで、複数シートのデータを簡単に統合可能
  • 列数が異なる場合は、ARRAYFORMULAREPTで空白列を調整
  • IMPORTRANGEを使えば、別ファイルの在庫データも統合可能

在庫データを一元管理することで、業務効率は格段に向上します。ぜひ、GoogleスプレッドシートのQUERY関数を活用してみてください。