【Googleスプレッドシート | クエリ関数シリーズ2】条件を指定してデータを抽出出来る?

スポンサーリンク

条件を指定してデータを抽出出来る?

クエリ関数とは、Googleスプレッドシート特有の関数で、指定したデータ範囲内から、条件を指定してデータ抽出などを行える関数です。

このように、指定範囲から条件を指定してデータを取り出す関数は、EXCELでもお馴染みのデータベース関数各種がありますが、このクエリ関数を使うことによって、より柔軟に複雑な条件を簡単に指定することが出来るようになります。

EXCELにはない関数なので、せっかくスプレッドシートを使うなら覚えておきたい関数ですね(^^)

今回は、クエリ関数で条件を指定して抽出する方法を紹介させていただきます!

これまでのシリーズはこちら

【Googleスプレッドシート | クエリ関数シリーズ1】Query関数使ってる??
クエリ関数って使ってる? クエリ関数とは、Googleスプレッドシート特有の関数で、指定したデータ範囲内から、条件を指定してデータ抽出などを行える関数です。 このように、指定範囲から条件を指定して続きを読む

使い方

列を抽出する時に条件を付け加え該当するデータだけを抽出出来ます。

【サンプル】

※なんちゃって個人情報さんから頂いたサンプルですm(_ _)m

この元データを「範囲」に指定して、次の「表示用」シートのA1セルにQuery関数をいれていきます。

基本構文

=QUERY(範囲,"select 列 where 条件")

単純抽出の「select 列」に続けて「where 条件」を追加します。

もう少し具体的には次のようになります。

-条件が文字列の場合-

=QUERY(範囲,"select 列 where 列='文字列'")

文字列の指定は「'」で囲って下さい。

-条件が数値の場合-

=QUERY(範囲,"select 列 where 列=数値")

数値の場合は囲わなくていいです。

それでは実際に操作してみましょう。

データの中から「性別が女」のものだけを取り出してみます。

サンプルの、「表示用」シートのA1セルに次の数式を入力して下さい。

=QUERY('クエリ関数Data'!A1:H,"select * where C='女'")

次のように「性別が女」のものだけが抽出されます。

エラーが出ている方は次の項目を確認して下さい。

  1. 「*」は半角
  2. 半角スペースの空いている場所
  3. 「'」や「"」で囲われている場所が適切か

結構繊細なので、きちんとあってないとエラーが出ちゃいます(*_*)

次は、「性別が女ではないものを抽出します。

where C='女'」を「where C!='女'」に変更します。「!=」イコールではないという意味です。

=QUERY('クエリ関数Data'!A1:H,"select * where C!='女'")

次のように、「女ではない」データ、このサンプルだと女以外は「男」しかありませんので、「男」のデータが抽出されました。

数値の条件もやってみましょう

元データのD列(年齢)で条件指定をしていきます。

「年齢が36」のデータを抽出します。次の数式を「表示用」シートのA1セルに入力して下さい。

=QUERY('クエリ関数Data'!A1:H,"select * where D=36")

年齢が「36」のデータだけが抽出されます。

サクサク行きます。

反対に、「年齢が36でない」データです。

where D=36」を「where D!=36」にするだけですね。

=QUERY('クエリ関数Data'!A1:H,"select * where D!=36")

年齢が36じゃないデータが抽出されます。

それでは次に、数値の指定特有の、「不等号」を使った抽出です。

基本的な書き方は同じです。「=」や「!=」の部分を不等号にします。

記号 意味
<= 以下
>= 以上
< 未満
>

それでは、「年齢が36以下」のデータを取り出してみましょう。「以下」なので「<=」を使います。

次の数式を、「表示用」シートのA1セルに入力します。

=QUERY('クエリ関数Data'!A1:H,"select * where D<=36")

「年齢が36以下」のデータが取り出されましたね。

「セルが空白(何も入っていない)」という条件は次のようになります。

文字列の場合は、「=''」と「'」を2つ連続していれます。

数値の場合は、ちょっと癖があります。「is null」をいれます。

それぞれこんな感じです。

文字列の場合(H列:キャリアが空白のデータ)

=QUERY('クエリ関数Data'!A1:H,"select * where H=''")

数値の場合(D列:年齢が空白のデータ)

=QUERY('クエリ関数Data'!A1:H,"select * where D is null")

「'」と「"」が絡み合って分かりにくいですが、注意して下さい。

サンプルのデータに空白のものを作りました。これで試してみます。

まずは、文字列の場合

文字列の場合(H列:キャリアが空白のデータ)

=QUERY('クエリ関数Data'!A1:H,"select * where H=''")

次に数値の場合、

数値の場合(D列:年齢が空白のデータ)

=QUERY('クエリ関数Data'!A1:H,"select * where D is null")

実務的には、「空白でないデータ」を出す方が需要が多いかもしれませんね。

文字列の場合(H列:キャリアが空白ではないデータ)

=QUERY('クエリ関数Data'!A1:H,"select * where H!=''")

」を「!=」に変えます。

このように、H列(キャリア)が空白ではないデータが抽出できます。

数値の場合(D列:年齢が空白ではないデータ)

=QUERY('クエリ関数Data'!A1:H,"select * where D is not null")

is null」を「is not null」に変えます。

このように、D列(年齢)が空白ではないデータが抽出出来ました。

まとめ

クエリ関数で、簡単な条件を指定してデータを抽出する方法をご紹介しました。次回は、もう少し複雑な条件の指定をやっていきたいと思います!

おまけ

Google先生の説明

https://support.google.com/docs/answer/3093343?hl=ja