【スプレッドシート】QUERY関数のmatchesの使い方|正規表現

スプレッドシートでデータ操作をしているときに、高度な文字列の検索をしてマッチした行を出力させるためには、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"] 人気の記事

icon-check-circle Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]
タイトルとURLをコピーしました