スプレッドシートで、データを抽出したいなと思うことは多いです。
そういったときに、QUERY関数は強力なツールの一つです。
QUERY関数を使えば、データのフィルタリング、集計、ソートなどを簡単に行うことができます。
この記事では、QUERY関数の使い方について解説していきます。
QUERY関数とは
QUERY関数は、SQL に似た構文を使ってデータの抽出をすることができます。
次のようなデータで、200円以上の果物を抽出したいとき、QUERY関数を使えば簡単に行うことができます。
E1セルに以下の関数を入力するだけで、簡単にデータの抽出をすることができます。
=QUERY(A1:C8, "SELECT A, B WHERE B >= 200")
QUERY関数の構文は次のようになります。
QUERY(データ, クエリ, [見出し])
- データ:クエリを実行するセルの範囲
- クエリ:実行するクエリ
- 見出し:データの見出しの行数。省略した場合は、データの内容に基づいて推測します。
先ほどの関数「=QUERY(A1:C8, “SELECT A, B WHERE B >= 200”)」について
- データ:A1:C8
- クエリ:SELECT A, B WHERE B >= 200
というようになっています。
データ部分にセルの範囲を指定して、クエリ部分を変えることでいろいろな抽出をすることができます。
これから、クエリ部分についていろいろな指定方法について解説していきます。
全データを取得する
次のようなデータをもとに説明していきます。
果物 | 金額 | 在庫 |
リンゴ | 300 | 50 |
バナナ | 210 | 100 |
グレープ | 190 | 200 |
レモン | 100 | 150 |
みかん | 180 | 75 |
スイカ | 350 | 60 |
いちご | 300 | 120 |
全データを取得するには、次のようなQUERY関数を使います。
=QUERY(A1:C8, "SELECT A, B, C")
SELECT を省略すれば、データのすべての列が表示されます。
次の関数でも同じ結果になります。
=QUERY(A1:C8, "")
表示させる列を選択したり、列の順番を並び替えることもできます。
=QUERY(A1:C8, "SELECT C, A")
条件を指定する
特定の条件のデータを抽出するときには、WHERE を使います。
次の関数では、金額が300円のデータを取得します。
=QUERY(A1:C8, "SELECT A, B WHERE B = 300")
複数の条件を指定することもできます。
次の関数は、金額が100円以上で、在庫が100より少ないデータを抽出します。
=QUERY(A1:C8, "WHERE B >= 100 AND C < 100")
並び替える
抽出したデータを並び替えたいときには、ORDER BY を使います。
次の関数は、抽出したデータを金額で並び替えます。
=QUERY(A1:C8, "SELECT A, B WHERE B > 200 ORDER BY B")
降順で並び替えたいときには DESC を使います。
=QUERY(A1:C8, "SELECT A, B WHERE B > 200 ORDER BY B DESC")
集計
SUM, COUNT, MAX, MIN などを使うこともできます。
=QUERY(A1:C8, "SELECT SUM(B), COUNT(A), MAX(C), MIN(C)")