
QUERY関数で範囲指定するときに、「データを1箇所にまとめるのめんどくさいな〜」と思ったことはありませんか?
実は、データを1箇所にまとめなくても複数範囲・複数シートをQUERY関数で集約してまとめる方法があります。
当記事では、
- QUERY関数の基礎知識
- 縦結合で集約してまとめる方法
- 横結合で集約してまとめる方法
- 結合する際の注意点
について解説します。
目次
QUERY関数の基礎知識
まずはQUERY関数の基礎知識からお話します。
QUERY関数は表計算ソフトの中でGoogleスプレッドシートでしか使うことのできない「特別な関数」です。
QUERY関数は以下の公式で構成されています。
command
=QUERY(範囲,"select 出力データ列 where 条件式 group by グルーピング列 order by ソート条件 limit 出力データ数 offset 開始行 label 列名")
QUERY関数はDB操作に使われるSQL文をベースに作られたスプレッドシート専用の関数です。
QUERY関数を使えばデータのフィルタリングやソート、グルーピングなどが驚くほど簡単にできるようになります。
この記事ではQUERY関数で複数範囲・複数シートを結合する方法について解説しますが、「まずはQUERY関数全般について知りたい」という方は、下記の記事が参考になります。
複数範囲・複数シートを結合する方法
QUERY関数で複数範囲・複数シートを結合するには、データ範囲を指定する際に結合させたい参照範囲を以下のように記述することで結合できます。
- 縦の結合:{範囲A; 範囲B; 範囲C…}
- 横の結合:{範囲A, 範囲B, 範囲C…}
縦で結合させるか横で結合させるかによって、「;(セミコロン)」で分割するか「,(カンマ)」で分割するかが変わってくるので、そこだけ注意しましょう。
縦の結合:{範囲A; 範囲B; 範囲C…}
縦で結合する際には、範囲ごとに「;(セミコロン)」で分割します。
以下のデータセットに対して、
以下のQUERY関数を実行すると、
command
=QUERY({A1:C4;E2:G5;I2:K4},"select *")
以下のような結果が得られます。
複数範囲のデータが「縦」方向に結合されていることがわかります。
結合したデータに対してフィルタリングやソートを実行したい場合は、通常通り「where句」や「order by句」を実行すればOKです。
横の結合:{範囲A, 範囲B, 範囲C…}
横で結合する際には、範囲ごとに「,(カンマ)」で分割します。
以下のデータセットに対して、
以下のQUERY関数を実行すると、
command
=QUERY({A1:A11,C1:C11,E1:E11},"select *")
以下のような結果が得られます。
複数範囲のデータが「横」方向に結合されていることがわかります。
横方向の結合の場合も、結合したデータに対してフィルタリングやソートを実行したい場合は、通常通り「where句」や「order by句」を実行すればOKです。
複数範囲・複数シートを結合するときの注意点
QUERY関数の実行例を見て気づいた方もいるかもしれませんが、結合してQUERY関数のデータ範囲を指定した場合、2つ注意点があります。
- 列の指定は「Col1, Col2,…」で行う
- 縦結合=列数・横結合=行数を揃える
1つずつ解説していきます。
列の指定は「Col1, Col2,…」で行う
QUERY関数で結合した場合、列の指定はアルファベットではなく、範囲中における列の順番で指定しましょう。
具体的には見出しにもあるように「Col1, Col2,…」というように指定してください。
考えてみたらわかりますが、範囲結合すると、必ずしも1列目がA列というわけではないんですよね…。
物理的に仕方のないことなので、範囲結合した際には「Col◯で指定」と覚えておきましょう。
縦結合=列数・横結合=行数を揃える
QUERY関数で結合した場合、結合方向によって列数または行数を揃える必要があります。
具体的には、
- 縦方向に結合:列数を揃える
- 横方向に結合:行数を揃える
というように列数または行数を揃えてください。
なぜ揃えなければいけないかと言うと、列数または行数がずれると、一部の参照範囲ではデータが欠損するなどのエラーが生じるからですね。
QUERY関数の構文が合っていて、列もCol◯で指定しているのにエラーが出る場合には、列数または行数がずれている可能性が高いので一度確認することをおすすめします。
まとめ
今回は「QUERY関数で複数範囲・複数シートを集約してまとめる方法」について解説しました。
Googleスプレッドシートならどこからでもデータを参照できるので、無理にデータを一元管理しなくて良くて助かりますね。
QUERY関数を使って、縦にも横にも自在に複数シート・複数範囲を集約してまとめて、わかりやすいレポートを作成しましょう。
では、また。