Clicky

【応用編】QUERY関数で複数シートを結合し、空白列も自在に挿入する方法|Googleスプレッドシート

Spreadsheet(スプレッドシート)
Spreadsheet(スプレッドシート)
この記事は約3分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

複数シートのデータを「在庫リスト」シートに縦方向で結合したい、という応用編です。今回は、列の項目が違っている場合に結合する方法を考えてみます。

前提

たとえば、以下のようなシートがあるとします。

  • 「在庫リスト2024」シート:商品名・種別・在庫数…
  • 「在庫リスト2025」シート:商品コード・カテゴリ・在庫数…

これらを 「在庫リスト」シートにひとつにまとめたい

【方法1】QUERY関数+{範囲1; 範囲2} の書き方

これは列の項目が一致する場合に使えるシンプルな方法です。

パスワード保護

記事を見るにはパスワードを入力してください:

       

LINEに友達登録をして「」と送信してください。閲覧するためのパスワードが自動返信で届きます。

パスワードが違います

友だち追加
=QUERY({
'在庫リスト2024'!A2:F;
'在庫リスト2025'!A2:F
}, "where Col1 is not null", 0)

ただし、今回の場合はそれぞれのシートの列の項目がずれているため、この結合の方法を使うと別の項目がずれてしまいます。

ポイント

  • 0:ヘッダー行なし(データの1行目が列名でない場合)
  • {…; …}:縦に結合(UNION ALL的な処理)
  • QUERY(…):条件指定や並び替え、抽出などをSQLライクに
  • "where Col1 is not null":1列目が空でない行のみ抽出

【方法2】列構成が違う場合 → 適切に列数を合わせて結合

たとえば、

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

これらをうまく結合したい場合は、このようにします。

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

そうすると、それぞれの列で必要な項目が結合されて、ひとつのシートとなります。


【補足】IMPORTRANGE を使って別ファイルも統合可能

=QUERY({
IMPORTRANGE("ファイルID1", "在庫リスト2024!A2:F");
IMPORTRANGE("ファイルID2", "在庫リスト2025!A2:F")
}, "select * where Col1 is not null", 0)

IMPORTRANGEは、スプレッドシートのファイルが異なっている場合に使える方法です。


【TIPS】QUERY関数を使った結合の整理表

方法説明
{範囲1;範囲2}縦方向の結合(行追加)
{範囲1, 範囲2}横方向の結合(列追加)
QUERY(…,"where …")条件付き抽出
QUERY(…,"group by")集計
QUERY(…,"pivot")ピボットテーブルのように変換

まとめ

  • 「QUERY + {} + セミコロン ;」で複数シートを統合
  • 列が異なる場合は ARRAYFORMULA(REPT("", 行数))列数調整
  • 集計・抽出・並び替えも QUERY で一気に可能

結合する際に列の数を合わせることがポイントです。