QUERY関数のwhere条件で、特定の文字の並び方をした文字列を指定したい場合があると思います。
例えば「”履歴書” ではじまり “書き方” で終わる」という並び方をした文字列を、今回紹介するlikeを使うことで、次のように表現することができます。
=QUERY(範囲,"where C like '履歴書%書き方' ")
この記事では、上記のようなよくある事例とともに、like演算子の使い方を解説していきます。
like演算子の使い方
=QUERY(範囲,"where C like '検索文字列' ")
ワイルドカードと呼ばれる、like演算子で検索する際に使える特殊文字には2種類あります。
- %(パーセント):ゼロ文字または1文字以上
- _(アンダースコア):何か1文字
ワイルドカードをはじめて聞いた方でも理解できるよう、ここからlikeを使った例を紹介していきます。
like演算子で%(ゼロ文字または1文字以上)を使う例
%(パーセント)は、「ゼロ文字または1文字以上」を意味するワイルドカード(特殊文字)です。likeを使った検索のときに、利用することができます。
①%のみ
=QUERY(範囲,"where C like '%' ")
%だけのときは「ゼロ文字または1文字以上」という意味になるため、全ての文字列とマッチして出力されます。
②%文字列
=QUERY(範囲,"where C like '%書き方' ")
「%書き方」の意味は、「先頭から0文字以上の文字が続いて最後は “書き方” で終わる文字列」を意味します。該当するタイトルは最後に「書き方」がつく次の3つになります。
③文字列%文字列
=QUERY(範囲,"where C like '履歴書%書き方' ")
「履歴書%書き方」は、「先頭が “履歴書” ではじまり、次に0文字以上の文字列が続き、末尾が “書き方” で終わる文字列」を意味します。なので「履歴書で始まり書き方で終わる」次の2つのタイトルが出力されます。
like演算子で_(何か1文字)を使う例
_(アンダースコア)は、「何か1文字」を意味するワイルドカード(特殊文字)です。likeを使った検索のときに、利用することができます。
①_のみ
=QUERY(範囲,"where C like '_' ")
「_」は、「1文字だけの文字列」を意味します。各タイトルは2文字以上で、1文字だけのタイトルが存在しないため、何も表示されません。
②_を6こ
=QUERY(範囲,"where C like '______' ")
「______」は、「6文字の文字列」を意味します。「就活ノウハウ」は6文字の文字列のため、出力されます。
③文字列_文字列
=QUERY(範囲,"where C like '就_ノウハウ' ")
「就_ノウハウ」は、「先頭が “就” ではじまり、次に何か1文字が続き、そのあとに “ノウハウ” が続いて終わる文字列」を意味します。これに該当するのは「就活ノウハウ」の文字列だけです。
④文字列_文字列%
=QUERY(範囲,"where C like '検索文字列' ")
「就_ノウ%」は、「先頭が “就” ではじまり、次に何か1文字が続き、次に “ノウ” が続いて、その次は0文字以上が続いて終わる」という意味になります。
「QUERY関数の使い方」まとめ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") |
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]