スプレッドシートQUERY関数の使い方まとめ【基礎から応用まで】
本記事ではスプレッドシートのQUERY関数の使い方を解説していきます。
QUERY関数は使いこなせれば便利な関数ですが、他の関数と違い少し複雑です。
ぜひ、本記事を参考にQUERY関数の使い方をマスターしましょう。
スプレッドシートのQUERY関数とは
スプレッドシートのQUERY関数とは、公式ドキュメントによると以下のような説明があります。
Google Visualization API のクエリ言語を使用して、データ全体に対するクエリを実行します。
公式ドキュメント
噛み砕いて説明すると、クエリ言語というものを使用して元データから欲しいデータを抽出する関数となります。
クエリ言語とは、抽出する条件や列を指定できるオプションです。
このオプションを組み合わせて使用することで、欲しいデータを見やすく抽出できるのです。
QUERY関数の基本的な使い方
QUERY関数は以下のように使います。
QUERY(データ, クエリ, [見出し])
引数 | 説明 |
---|---|
データ | 元データの範囲 |
クエリ | 実行するクエリ(オプション) |
見出し | [省略可]元データ範囲の見出しの行数 |
QUERY関数の引数は3つです。
- データ・・・「どこのデータを参照するか」という元データの範囲
- クエリ・・・「どういうデータを抽出するか」という命令文
- 見出し・・・「元データの見出し」の行数
特に第二引数の「クエリ」が難しいですが、QUERY関数を使う上で必須になるので基本的な使い方は覚えておきましょう。
よく使うクエリ言語
クエリ言語(オプション)は複数ありますが、ここではよく使うクエリを5つご紹介します。
select | 抽出する列を指定できる |
where | 抽出する条件を指定できる |
order by | 抽出データを降順・昇順に並び替えられる |
group by | 抽出データの集計をすることができる |
label | 抽出データの見出しを変更することができる |
それぞれのクエリについて以下で解説していきます。
select句で抽出したい列を指定
まずは抽出する列を指定できるselect句です。
select句は以下のように指定します。
select 列
=QUERY(B3:E13,”select B”,1)
元データのB列だけを抽出
別シートを参照する場合は「Col」で指定する
同じシートの元データを参照する場合は列を直接指定できますが、別シートを参照する場合や複数の範囲を結合する場合は「Col1,Col2,…」と指定します。
「Col」は列(Column)の略で、元データ範囲の何列目かを数値で指定するためのものです。
例えば元データの範囲が「A1:D10」の場合、「Col1はA列」「Col2はB列」となります。
元データの範囲が「C2:H20」の場合は「Col1がC列」「Col2はD列」です。
「元データの何列目かを指定する」と覚えておくと良いでしょう。
where句で抽出したい条件を指定
次に、抽出する条件を指定できるwhere句です。
where句は以下のように指定します。
where 条件
ここでは条件の指定方法を4つご紹介します。
例①基本的な指定方法
条件を直接指定する方法が最も基本です。
=QUERY(B3:E13,”where C = ‘男性'”,1)
C列が「男性」だけを抽出
文字列を条件に指定する場合は「’’(シングルクオーテーション)」で囲むようにしてください。
例②条件をセル参照にする
2つ目の指定方法はセル参照にするやり方です。
=QUERY(B3:E13,”where C = ‘”&H2&”‘”,1)
C列がH2セルに入力されている値だけを抽出
セル参照で指定する場合は「&(アンパサンド)」で囲みましょう。
例③条件に日付を指定する
where句の条件には文字列や数値だけでなく、日付を指定することもできます。
使い方としては「◯日以前だけを抽出」や「◯日〜◯日だけを抽出」などです。
=QUERY(B3:E13,”where D = date ‘2022-08-22′”,1)
D列が「2022/08/22」のみを抽出
where句で条件で日付を使うには「date 日付」と指定します。
日付の形式は必ず「年-月-日」と指定しましょう。
例④複数の条件で指定する
where句で指定できる条件は、「◯◯かつ△△」や「◯◯または△△」など複数指定することもできます。
=QUERY(B3:E13,”where C = ‘男性’ and D = date ‘2022-08-22′”,1)
C列が「男性」かつD列が「2022/08/22」だけを抽出
複雑なデータを抽出するには複数条件の指定は必須になります。
ぜひ使い方を覚えておきましょう。
order by句で抽出したデータを並び替え
次は、抽出するデータを降順・昇順にソートできるorder by句をご紹介します。
order by句は以下のように指定します。
order by 列 [ソート方法]
ソート方法は、降順(大きい順)と昇順(小さい順)の2パターンがあります。
昇順に並び替え
昇順(小さい順)に並べ替えるには、ソート方法に「asc」を指定します。
=QUERY(B3:E13,”order by B asc”,1)
B列を基準に昇順(小さい順)で並べかえ
降順に並び替え
降順(大きい順)への並べ替えは「desc」を指定します。
=QUERY(B3:E13,”order by B desc”,1)
B列を基準に降順(大きい順)で並べかえ
order by句での並べ替えは数値や日付だけでなく、文字列でも適用されます。
group by句で抽出データを集計
次に、抽出するデータを様々な方法で集計できるgroup by句です。
select 列,集計関数 group by 列
上記のように指定します。
集計関数という見慣れないものがありますが、これを指定することでデータの個数を数えたり、合計値や平均値などを集計することができるようになります。
group by句はこの集計関数とセットで使うことがほとんどなのでぜひ使い方をマスターしておきましょう。
group by句の詳しい使い方についてはこちらの記事で詳しく解説しています。
気になる方はチェックしてみてください。
label句で抽出データの見出しを変更
最後に、抽出するデータの見出しを上書きできるlabel句の使い方です。
label 列 見出し
label句は上記のように指定します。
=QUERY(B3:E13,”label B ‘合計売上'”,1)
B列の見出しを「合計売上」に変更
こちらもwhere句で指摘したように、「’’(シングルクオーテーション)」で囲むようにしましょう。
複数の範囲をまとめる方法
これまでは、QUERY関数の第一引数の元データの範囲を1つのみで解説してきましたが、複数の範囲を結合することも可能です。
IMPORTRANGE関数と組み合わせることで、複数の別シートのデータを結合・参照することもできます。
QUERY関数を使った複数範囲・シートの結合については以下の記事をご覧ください。
まとめ
今回はスプレッドシートのQUERY関数の使い方をご紹介しました。
少し難しい関数である分、使いこなせば業務効率が格段に上がる便利な関数です。
ぜひ使いこなせるよう何度もチェックしてみてください。