指定したデータの抽出「QUERY関数」- スプレッドシートの使い方

スプレッドシートでは、シートから条件に一致するデータのみを抜き出すことが可能です。
今回は、とても便利で魅力的な関数「QUERY」についてご紹介いたします。

「QUERY」関数とは

QUERY関数を利用すると、入力されているデータから、条件をつけて一致する項目のみ抜き出すことができます。
機能としては「VLOOKUP」や「INDEX・MATCH」と似ているのですが、 抽出する条件や表示する方法を柔軟に設定することができるのでとても便利な関数です。

ポイント

抽出するデータの条件を指定
抽出したデータの並び替え
抽出したデータの集計

など色々なことを設定することができます。

関数の中では数式のルールがちょっと複雑なので、最初はわかりづらく感じるかもしれませんが、一度覚えてしまえば難しいことはありません。
自由度がとても高い関数ということもあり、色々な場面に対応できますので、是非使ってみてくださいね。

今回はQUERY関数の数式のルールとともに、条件をつけてデータを抽出するやり方についてご説明いたします。

「QUERY」関数の使い方(条件を付けてデータを抽出)

早速ですが、こちらのデータの中から、担当が「田島」さんの行を抜き出していこうと思います。

まずは、QUERY関数を呼び出します。

数式の構成は下記のようになります。

=QUERY(範囲,"クエリ(条件等)",見出し)

例としては、

=QUERY($B:$H,"WHERE C ='田島'",2)

こんな形になります。
詳細を一つづつみていきましょう。

範囲

データを取得する範囲を選択します。

今回は、データが永続的に増えていく想定で作成したので、列全体という形で指定しました。
範囲が決まっている場合にはその範囲だけでも大丈夫です。

また、列全体を指定した場合、動きが重くなってしまうことがあります。
(関数で列全体を見に行っているので、それはそうですよね・・・)
その場合の対処法につきましても、後日執筆しますのでしばしお待ちください。

クエリ(条件等)

ここには、「クエリ言語」と呼ばれるものを入力していきます。

「クエリ言語」とは簡単に言ってしまえば、関数に持たせる命令です。
全部で10種ほどあるのですが、今回は条件に一致する行を探しに行く「WHERE」についてのみご説明いたします。

クエリの記載ルールは、下記の形になります。

"クエリ言語 条件"

今回は、担当列が「田島」さんの行のみ抜き出しますので、このような文を書きます。

"WHERE C='田島'"

命令を言葉で表すと、こんな感じでしょうか。

"C列が'田島'と一致する行を抜き出して"

ここの書き方さえ覚えてしまえば、簡単にQUERY関数を扱うことができます。

見出し

選択した範囲の中に、見出しが含まれている場合はここで入力をいたします。

入力のルールはこちらになります。
TRUE = 選択範囲の一行目を見出しとして表示
FALSE = 見出しを表示しない(見出しを別で作った場合はこちら)
2(数字) = 選択範囲の2行目を見出しとして表示(入力した数字で行を指定)
-1 = データの内容に基づいて自動的に判定(省略した場合もこの形になります)

今回は2行目を指定し、出来上がった数式がこちらになります。

=QUERY($B:$H,"WHERE C='田島'",2)

はい。担当が田島さんの列のみ表示されました。
QUERY関数を使って、条件付きでデータを抜き出す書き方はこのような形になります。

条件を複数設定する場合

WHEREでは、複数の条件を設定することが可能で、OR条件(どれかが当てはまる)、AND条件(全てが当てはまる)どちらでも設定することができます。

OR条件(どれかが当てはまる)

先程の表から試しに、担当が「田島」さんと「山中」さんの行を抜き出してみましょう。
数式はこうなります。

=QUERY($B:$H,"WHERE C='田島' OR C='山中'",2)

担当が「田島」さんか「山中」さんの行が表示されました。

AND条件(全てが当てはまる)

次は、担当が「田島」さんで区分が「魚」の行を抜き出してみます。
数式はこちら。

=QUERY($B:$H,"WHERE C='田島' AND D='魚'",2)

担当が「田島」さん、かつ区分が「魚」の行のみ表示されました。

条件の項目名でセルを参照させる場合

一致条件の項目名を数式に打ち込むのではなく、セルを参照させる場合には数式が少し複雑になります。
項目名として使用したいセルを「S2」と想定するとこちらの数式になります。

=QUERY($B:$H,"WHERE C ='"&S3&"'",2)

「"」と「'」が多く少し複雑なってきましたので、一旦整理しましょう。

数式に直入力
=QUERY($B:$H,"WHERE C='田島'",2)
セルを参照
=QUERY($B:$H,"WHERE C='"&S3&"'",2)

囲みの初めと終わりを同色にして、色分けをするとこのような形になります。
多少はわかりやすくなりましたかね。。。笑

セルを参照させる場合には文字列を入力している箇所に、

"&参照セル&"

この形でセルを指定します。

複数条件と合わせて数式を組み立てると、こんな数式が作れます。

=QUERY($B:$H,"WHERE C ='"&S3&"' AND D ='"&S4&"'",2)

担当が「S3」 、かつ区分が「S4」の行のみ表示されます。

はい。表示されました。

別シートからの参照

今回は少しでも数式をわかりやすくするために、同じシート内で作成をしましたが、もちろん別シートから参照することも可能です。
他の数式と同じく、範囲指定の部分にシート名を記載すればOKです。

数式はこちら。
=QUERY('参照元シート'!$B:$H,"WHERE C='田島'",2)

こちらで別シートから指定したデータを抜き出すことができます。

最後に

QUERY関数は、少し複雑な数式を組み立てる形になります。
特にクエリ(条件)を入力する箇所は、他関数ではなかなか使用しない入力ルールになっています。

うまく表示されない時には、エラー文を確認しつつ、数式をしっかりとチェックしてみてください。
QUERYは他にも色々と面白いことができますので、また記事にしますね。

お読みいただきありがとうございました。

こちらもCHECK

並び替え「SORT関数」「SORTN関数」- スプレッドシートの使い方

続きを見る

こちらもCHECK

簡単に扱える「初心者向け関数 第1弾」- スプレッドシートの使い方

続きを見る

ご質問や不明点などございましたらお気軽にお問い合わせください。

お問い合わせはこちらから