スプレッドシートで複数シートを集約してまとめるには?【QUERY関数で結合】

QUERY関数で複数範囲・複数シートを結合するには?【縦・横】
mono
mono
こんにちは、monoです。

スプレッドシートで複数シートのデータを集約してまとめるなら「QUERY関数」で結合するのがおすすめです。

縦結合、横結合それぞれのまとめ方について解説するので、スプレッドシートで複数シートを集約してまとめる方法を知りたい人はぜひ参考にしてください。

当記事では、

  1. 縦結合で集約してまとめる方法
  2. 横結合で集約してまとめる方法
  3. 結合する際の注意点

について解説します。

目次

QUERY関数の基礎知識

まずはQUERY関数の基礎知識からお話します。

QUERY関数は表計算ソフトの中でGoogleスプレッドシートでしか使うことのできない「特別な関数」です。

QUERY関数は以下の公式で構成されています。

=QUERY(範囲,
  "select 出力データ列
   where 条件式
   group by グルーピング列
   order by ソート条件
   limit 出力データ数
   offset 開始行
   label 列名"
)

QUERY関数はDB操作に使われるSQL文をベースに作られたスプレッドシート専用の関数です。

QUERY関数を使えばデータのフィルタリングやソート、グルーピングなどが驚くほど簡単にできるようになります。

この記事ではQUERY関数で複数範囲・複数シートを結合する方法について解説しますが、「まずはQUERY関数全般について知りたい」という方は、下記の記事が参考になります。

あわせて読みたい
QUERY関数の使い方!基礎から応用までわかりやすく解説 スプレッドシートでしか使えない関数はいくつかありますが、代表的なのはなんと言っても「QUERY関数」です。 SQLライクにデータの集計・分析ができるQUERY関数は、スプ...

複数シート・複数範囲を集約してまとめる方法

QUERY関数で複数範囲・複数シートを結合するには、データ範囲を指定する際に結合させたい参照範囲を以下のように記述することで結合できます。

  • 縦の結合:{範囲A; 範囲B; 範囲C…}
  • 横の結合:{範囲A, 範囲B, 範囲C…}

縦で結合させるか横で結合させるかによって、「;(セミコロン)」で分割するか「,(カンマ)」で分割するかが変わってくるので、そこだけ注意しましょう。

縦の結合:{範囲A; 範囲B; 範囲C…}

縦で結合する際には、範囲ごとに「;(セミコロン)」で分割します。

以下のデータセットに対して、

以下のQUERY関数を実行すると、

=QUERY({A1:C4;E2:G5;I2:K4},"select *")

以下のような結果が得られます。

複数範囲のデータが「縦」方向に結合されていることがわかります。

結合したデータに対してフィルタリングやソートを実行したい場合は、通常通り「where句」や「order by句」を実行すればOKです。

横の結合:{範囲A, 範囲B, 範囲C…}

横で結合する際には、範囲ごとに「,(カンマ)」で分割します。

以下のデータセットに対して、

以下のQUERY関数を実行すると、

=QUERY({A1:A11,C1:C11,E1:E11},"select *")

以下のような結果が得られます。

複数範囲のデータが「横」方向に結合されていることがわかります。

横方向の結合の場合も、結合したデータに対してフィルタリングやソートを実行したい場合は、通常通り「where句」や「order by句」を実行すればOKです。

複数範囲・複数シートを結合するときの注意点

QUERY関数の実行例を見て気づいた方もいるかもしれませんが、結合してQUERY関数のデータ範囲を指定した場合、2つ注意点があります。

  1. 列の指定は「Col1, Col2,…」で行う
  2. 縦結合=列数・横結合=行数を揃える

1つずつ解説していきます。

列の指定は「Col1, Col2,…」で行う

QUERY関数で結合した場合、列の指定はアルファベットではなく、範囲中における列の順番で指定しましょう。

具体的には見出しにもあるように「Col1, Col2,…」というように指定してください。

考えてみたらわかりますが、範囲結合すると、必ずしも1列目がA列というわけではないんですよね…。

物理的に仕方のないことなので、範囲結合した際には「Col◯で指定」と覚えておきましょう。

Colの記載になっていないときに表示されるエラーメッセージ

関数QUERYのパラメータ2のクエリ文字列を解析できません: NO_COLUMN:A

縦結合=列数・横結合=行数を揃える

QUERY関数で結合した場合、結合方向によって列数または行数を揃える必要があります。

具体的には、

  • 縦方向に結合:列数を揃える
  • 横方向に結合:行数を揃える

というように列数または行数を揃えてください。

なぜ揃えなければいけないかと言うと、列数または行数がずれると、一部の参照範囲ではデータが欠損するなどのエラーが生じるからですね。

QUERY関数の構文が合っていて、列もCol◯で指定しているのにエラーが出る場合には、列数または行数がずれている可能性が高いので一度確認することをおすすめします。

縦結合で列数が異なるときに表示されるエラーメッセージ

ARRAY_LITERALの配列リテラルで、1つ以上の行の値が見つかりませんでした。

横結合で行数が異なるときに表示されるエラーメッセージ

関数array_rowのパラメータ2に一致しない行サイズがあります。

まとめ

今回は「QUERY関数で複数範囲・複数シートを集約してまとめる方法」について解説しました。

Googleスプレッドシートならどこからでもデータを参照できるので、無理にデータを一元管理しなくて良くて助かりますね。

QUERY関数を使って、縦にも横にも自在に複数シート・複数範囲を集約してまとめて、わかりやすいレポートを作成しましょう。

では、また。

QUERY関数の基礎から応用まで!使い方を徹底解説【保存版】

続きを読む

QUERY関数の解説本【kindle unlimitedで無料】

この記事を書いた人

28歳♂Webアナリスト/おすすめ本と生活改善グッズ紹介サイトmonoblog.jp他4サイト運営15万PVほど/楽天経済圏/リベ大生/サウナ/筋トレ/お仕事の依頼はこちら

目次