スプレッドシートのQUERY関数でデータ抽出!エクセルにない関数!

スプレッドシートのQUERY関数でデータ抽出!エクセルにない関数! IT

スプレッドシートのQUERY関数でデータ抽出!エクセルにない関数!

スプレッドシートのQUERY関数でデータ抽出!エクセルにない関数!

この記事ではスプレッドシートにはあってExcelにはない関数、QUERY(クエリ)関数を紹介いたします!

QUERY関数は表から指定した条件に合致するデータを抽出できる機能です。

つまりExcelで言えばピボット機能ような結果がスプレッドシートでは関数でできちゃいます!

スプレッドシート独自で便利なQUERY関数の使い方を解説していきます。

QUERY関数の使い方

QUERY関数の記述方法は以下です。

=QUERY(データ,クエリ,見出し)

上だけでは分かりにくいので、それぞれの引数について補足します。

●データ
抽出元となるデータを指定します。

●クエリ
抽出するデータの条件をGoogle Visualization APIのクエリ言語に則って記述します。(後ほど解説)

●見出し
任意で見出し行が複数行ある際には行数を指定することで、複数の行の見出しをヘッダに設定できます。
見出しが1行であれば設定しなくても良いですし、”-1″と指定することもできます。

まだまだ分かりにくいと思いますので、例を挙げて説明していきます。
例として、以下のような表を使ってQUERY関数でデータを抽出していきます。

QUERY関数_表

上の表から性別が女性のデータを抽出していきます。

「=QUERY(A,F, “where C = ‘女'”)」とデータを抽出したい範囲の左上のセルに入力します。
クエリは””(ダブルコーテーション)で囲み、クエリ内で文字列を抽出条件にする場合は”(シングルコーテーション)で囲みます。

“where”の後ろに抽出条件を入力することで抽出したいデータが表示できるということです。

入力すると下のH~M列のようにデータ抽出結果が表示されます!

=QUERY(A,F, “where C = ‘女'”)

抽出する列を指定することも可能です。

例えば、上の女性のみを抽出する条件で「指名」「年齢」だけ抽出してみましょう。

“where”の前に“select”で抽出したい列のアルファベットを指定します。
「=QUERY(A:F, “select B,E where C = ‘女'”)」と入力します。

=QUERY(A:F, “select B,E where C = ‘女'”)

“where”の条件で”select”で指定した列のみを抽出することができました!

クエリの記述について下の画像にまとめておきます。

スプレッドシート_QUERY関数_クエリまとめ

基本的なQUERY関数の使用方法が分かりましたでしょうか?

続いてもう少し応用的な抽出条件についても紹介していきます!

QUERY関数の抽出条件

範囲指定

QUERY関数での抽出条件では範囲指定をすることも可能です。
つまり、上の表で例えるなら『「年齢」が○○歳~××歳の女性』のような条件でデータ抽出が可能です!

範囲指定をする場合、以下のように不等号を使って条件を指定します。
また複数の条件でデータを抽出する場合は”where”の後ろの条件に“and”でつなげて複数の条件を指定します。

QUERY関数_スプレッドシート_範囲指定
=QUERY(A:F, “select B,E where C = ‘女’ and E >=20 and E <=30”)

並び替え

QUERY関数は抽出するデータを列によって並び替えることも可能です。

並び替えをする際は”where”の条件の後に“order by”で並び替えの条件を指定します。
例えば、年齢で昇順に並び替えるのであれば、以下のように入力します。

=QUERY(A:F, "select B,E where C = '女' order by E asc")
QUERY関数_スプレッドシート_並び替え
=QUERY(A:F, “select B,E where C = ‘女’ order by E asc”)

つまり、”order by”の後ろに「並べ替えに使用する列」「並べ替えの方法」を指定すれば良いということです。

「並べ替えの方法」は降順にすることもできます。

並び順記述
昇順asc
降順desc

関数 – 平均・合計など

条件に基づいた年齢などの数値の平均や特定の数字の合計などの関数もQUERY関数内で使用することができます。
つまり、Excelで言うところのSUM(合計)AVG(平均)などの関数ということですね!

では以下のように入力して表の男性の年齢の平均をQUERY関数を用いて求めていきます。

=QUERY(A:F, "select avg(E) where C = '男'")

“select”の後ろに抽出するデータとしてavg(E)(年齢の平均)を指定します。

QUERY関数_スプレッドシート_数式
=QUERY(A:F, “select avg(E) where C = ‘男'”)

同じ要領で合計なども求めることができます。

QUERY関数で使用される代表的な関数をあげておきます。

名称説明
avg()グループの列のすべての値の平均値を返します。
count()グループの指定された列の要素の数を返します。
max()グループの列の最大値を返します。日付は以前の小さい方と比較され、文字列は大文字と小文字を区別してアルファベット順に比較されます。
min()グループの列の最小値を返します。日付は以前の小さい方と比較され、文字列は大文字と小文字を区別してアルファベット順に比較されます
sum()グループの列のすべての値の合計を返します。

詳細についてはGoogle ChartsのQuery Language Referenceを参照ください。

Excelにはない関数QUERY関数でデータ抽出

Excelにはない関数QUERY関数について使用方法を解説させていただきました。

関数を使ってデータを抽出することができるので、元のデータを触ってしまってデータを書き換えてしまう心配がないので、便利ですよね!

Excelでもピボットを使えば同様なことができますが、QUERY関数でやってしまった方が個人的には大げさでなくて好きですね!

余談ですが、QUERY関数はSQLというデータ抽出に使用される言語にとても似ているので、使用したことがある人にとってはとても使いやすいです!

コメント

  1. […] QUERY関数の詳細 […]

タイトルとURLをコピーしました