スプレッドシートでデータ操作をしているときに、高度な文字列の検索をしてマッチした行を出力させるためには、QUERY関数内の条件指定方法「matches」を使うのがおすすめです。
この記事ではスプレッドシートのQUERY関数内の条件指定「matches」の使い方と例をご紹介します。
QUERY関数matchesに必須の知識「正規表現」とは
正規表現とは「文字列のパータンを表現したもの」です。
正規表現の例
もし下記のようなリストがあったとします。
[su_note note_color=”#eeeeee”]
peach
apple
almond
[/su_note]
下記の文字列パターンのときに、
- ^.*$:peach,apple,almond
- ^.+$:peach,apple,almond
- ^.*e$:apple
- ^a[a-z]+$:apple,almond
- ^ap{2}le$:apple
- ^apple$:apple
- ^{5}$:peach,apple
よく使う正規表現の記号
表現 | 読み方 | 意味 |
---|---|---|
. | ドット | なんでもいい1文字 |
? | はてな | ?の前の文字はあってもなくてもいい |
+ | プラス | +の前の文字を1文字以上で繰り返し |
* | アスタリスク | *の前の文字を0文字以上で繰り返し |
{n} | 波括弧 | {}直前の文字をn回繰り返し |
{m,n} | 波括弧 | {}の直前の文字をm回以上、n回以下の繰り返し |
^ | キャロット | 文字列の先頭 |
$ | ドルマーク | 文字列の末尾 |
| | パイプ | |の左側の文字列もしくは、|の右側の文字列 |
[] | 角括弧 | []内に入れたいずれかの文字1文字 |
[^] | 否定の角括弧 | []内に入れた、^に続くいずれかの文字を含まない1文字 |
QUERY関数のmatchesで正規表現の条件を指定
QUERY関数でのmatchesの使い方は下記のように使います。特定の列を指定し、その列の中で正規表現(文字列パターン)に一致するものを出力する意味になります。
=QUERY(範囲,"WHERE 列 matches '正規表現'")
matcehsの使い方例
例えば、次のmatchesの意味は「先頭が”履歴書”で始まる文字列」とい正規表現になっています。
=QUERY(B3:E8,"WHERE C matches '^履歴書.*$'")
よって、C列の「先頭が”履歴書”で始まる文字列」を含む行を出力してくれます。
「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") |
[su_note note_color="#00BFFF" text_color="#ffffff"]
人気の記事
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]