QUERY関数でWHERE条件を複数指定する方法には大きく2種類あります。
- AND(かつ)の意味で複数指定する
- OR(または)の意味で複数指定する
この記事ではQUERY関数のWHERE条件「AND」「OR」それぞれの指定方法を、例とともに解説しているので、山行にしてみて下さい。
[su_box title=”QUERY関数の基本”]
=QUERY(範囲,"SELECT * WHERE 条件",見出し)
[su_table]
範囲 | QUERY関数で検索するセル範囲。 |
条件 | 範囲の中から欲しい条件を指定します。 |
見出し | 1行目を見出しとして出力するなら「TRUE」。見出しを出力しないなら「FALSE」と入力。 |
注意点 | ダブルクオーテーション(”)で囲った中でテキストを扱う場合は、 シングルクオーテーション(’)で囲う。 |
[/su_table]
[/su_box]
QUERY関数WHEREの複数条件①「AND」
AND条件は「AかつB」という意味の条件です。上図のように、AとBの条件が重なる部分になります。QUERY関数で各場合には次のような表現になります。
=QUERY(範囲,"SELECT * WHERE 条件1 AND 条件2")
データ例
2018/01/01 | 転職ノウハウ | 転職 | 100 | |
2018/01/02 | 就活ノウハウ | 就活 | 210 | |
2018/01/01 | 看護師転職方法 | 転職 | 20 | |
2018/01/02 | エンジニア転職方法 | 転職 | 30 | |
2018/01/01 | 履歴書の趣味欄の書き方 | 就活 | 230 | |
2018/01/02 | 履歴書の自己PRの書き方 | 就活 | 40 |
関数例
=QUERY(A:D,"SELECT * WHERE C='転職' AND D<50,TRUE)
意味
カテゴリが転職かつ、PVが50未満の行を出力。
出力例
2018/01/01 | 看護師転職方法 | 転職 | 20 | |
2018/01/02 | エンジニア転職方法 | 転職 | 30 |
QUERY関数WHEREの複数条件に②「OR」
OR条件は「AまたはB」という意味の条件です。上図のように、AとBの条件どちらか一方でも当てはまる状態です。QUERY関数で各場合には次のような表現になります。
=QUERY(範囲,"SELECT * WHERE 条件1 OR 条件2")
データ例
2018/01/01 | 転職ノウハウ | 転職 | 100 | |
2018/01/02 | 就活ノウハウ | 就活 | 210 | |
2018/01/01 | 看護師転職方法 | 転職 | 20 | |
2018/01/02 | エンジニア転職方法 | 転職 | 30 | |
2018/01/01 | 履歴書の趣味欄の書き方 | 就活 | 230 | |
2018/01/02 | 履歴書の自己PRの書き方 | 就活 | 40 |
関数例
=QUERY(A:D,"SELECT * WHERE C='就活' OR D>50)
意味
カテゴリが就活、または、PVが50より上
出力例
2018/01/01 | 転職ノウハウ | 転職 | 100 | |
2018/01/02 | 就活ノウハウ | 就活 | 210 | |
2018/01/01 | 履歴書の趣味欄の書き方 | 就活 | 230 | |
2018/01/02 | 履歴書の自己PRの書き方 | 就活 | 40 |
複数条件「AND」と「OR」を組み合わせたらどうなるのか
=QUERY(範囲,"SELECT * WHERE 条件1 OR 条件2")
データ例
2018/01/01 | 転職ノウハウ | 転職 | 100 | |
2018/01/02 | 就活ノウハウ | 就活 | 210 | |
2018/01/01 | 看護師転職方法 | 転職 | 20 | |
2018/01/02 | エンジニア転職方法 | 転職 | 30 | |
2018/01/01 | 履歴書の趣味欄の書き方 | 就活 | 230 | |
2018/01/02 | 履歴書の自己PRの書き方 | 就活 | 40 |
関数例
=QUERY(A:D,"SELECT * WHERE C='就活' and D>100 OR C='転職'")
上記の関数は、下記のようにカッコ()で囲った場合と同じ意味になります。()を使って視覚的に理解しやすいようにするのもよいでしょう。
=QUERY(A:D,"SELECT * WHERE (C='就活' and D>100) OR C='転職'")
意味
カテゴリが就活かつPVが100より大きい、またはカテゴリが転職。
出力例
2018/01/01 | 転職ノウハウ | 転職 | 100 | |
2018/01/02 | 就活ノウハウ | 就活 | 210 | |
2018/01/01 | 看護師転職方法 | 転職 | 20 | |
2018/01/02 | エンジニア転職方法 | 転職 | 30 | |
2018/01/01 | 履歴書の趣味欄の書き方 | 就活 | 230 |
QUERY関数の使い方 | 使用頻度 | 使用例 | |
---|---|---|---|
オプション | Order byで昇順・降順を指定する | ★★ | QUERY("範囲" "order by 列 asc") |
オプション | group byで同じ値をグルーピングして集計する | ★★★ | QUERY(範囲,"select 列A, 集計関数(列B) group by 列A") |
オプション | pivotを使って、group byをさらにグルーピングして表示する | ★ | QUERY(範囲, "select 列A, 集計関数(列A) where group by 列A pivot 列B") |
オプション | labelを使って、出力される列のラベルを変更する | ★ | QUERY(範囲, "label 列 '名前' ") |
オプション | formatを使って、出力される値の表示形式を変更する | ★ | QUERY(範囲, "format 列 '表示形式' ") |
オプション | limitを使って、表示する行数に制限をかける | ★ | QUERY(範囲, "limit 数") |
オプション | offsetを使って表示データを上からスキップする方法 | ★ | QUERY(範囲, "offset 数") |
オプション | optionsを使う | ★ | |
演算子 | containsを使って、指定文字列を含む行を表示する | ★★ | QUERY(範囲, "where 列 contains '検索文字列' " |
演算子 | starts withを使って、行の先頭文字列に条件を指定する | ★ | QUERY(範囲, "where 列 starts with '検索文字列' " |
演算子 | ends withを使って、行の後尾文字列に条件を指定する | ★ | QUERY(範囲, "where 列 ends with '検索文字列' " |
演算子 | likeで複雑な条件を指定する | ★ | QUERY(範囲,"where 列 like '検索文字列' ") |
演算子 | ★★★ | QUERY(範囲,"WHERE 列 matches '正規表現' ") | |
テクニック | whereの条件で空白を指定・除外する | ★★ | QUERY(範囲, "where 列 is not null") |
テクニック | QUERY関数にSUM関数を使う | ★★ | SUM(QUERY(範囲, "where 条件") |
テクニック | whereの条件に日付を指定する | ★★★ | QUERY(範囲,"where 列 = date '"& TEXT(セル,"YYYY-MM-DD") &"'") |
テクニック | QUERY関数内でimportrange関数を使って、別シートを参照する | ★★★ | QUERY(importrange(シートID,参照範囲), "where 条件") |
テクニック | 複数範囲・複数シートを結合する | ★★ | QUERY({IMPORTRANGE(シートURL,シート範囲);IMPORTRANGE(シートURL,シート範囲)},"WHERE 条件") |
テクニック | whereの条件を複数指定する | ★★★ | QUERY("範囲", "where 条件A or 条件B and 条件C") |
[su_note note_color="#00BFFF" text_color="#ffffff"]
人気の記事
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]