利用例としては、いわゆるNGワードを含むかどうかの判定が挙げられます。
- REGEXMATCH関数等を使って、ある文字列がリスト中の言葉を含むかどうか判定できます。
手順
リストのいずれかの言葉を含むか判定する
REGEXMATCH関数とJOIN関数を併用する方法
E3:E6には単語のリストが入力されています。
また、B3:B10には判定対象となる文字列が入力されています。これらの文字列がリストの単語のいずれかを含むかどうかをTRUE(含む)かFALSE(含まない)で判定するものとします。
画像は、まずC3セルに次のように入力し、B3セルの文字列に対して判定したところです。
C3セル
=REGEXMATCH(B3,JOIN("|",E3:E6))
JOIN関数を使って、リストの単語を「|」を挿みつつ連結しています。つまり「りんご|ぶどう|なし|いちご」という文字列が生成されます。
これをREGEXMATCH関数の第2引数とすることでOR判定(いずれかの単語を含むかどうかの判定)を行っています。
この方法のメリットは、ARRAYFORMULA関数を使って判定対象を容易に拡張できるところです。
画像では、C3セルに次のように入力し、B3:B10セルの文字列すべて対して判定を行っています。
C3セル
=ARRAYFORMULA(REGEXMATCH(B3:B10,JOIN("|",E3:E6)))
ただしデメリットとして、ANDの判定(すべての単語を含むかどうかの判定)に応用できない点と、リストが膨大になったときJOIN関数で生成される文字列が長くなりすぎるとエラーになる点が挙げられます。
REGEXMATCH関数とOR関数を併用する方法
画像ではC3セルに次のように入力し、B3セルの文字列に対して判定しています。
C3セル
=OR(ARRAYFORMULA(REGEXMATCH(B3,E3:E6)))
REGEXMATCH関数とARRAYFORMULA関数を用いて、B3セルの文字列がE3:E6の単語を含んでいるかそれぞれ(4回)判定しています。
さらにOR関数を使い、結果のいずれかがTRUE(含む)であればTRUEを返すようにしています。
この方法の場合、ARRAYFORMULA関数を併用しても判定対象となる文字列を拡張できないため、各セルに式を入力して個別に判定する必要があります。
画像ではC3セルに次のように入力してからC10までコピーし、B3:B10セルの文字列すべて対して判定を行っています。
絶対参照($)を使っている点に注意してください。
C3セル
=OR(ARRAYFORMULA(REGEXMATCH(B3,E$3:E$6)))
リストのすべての言葉を含むか判定する
画像ではC3セルに次のように入力し、B3セルの文字列に対して判定しています。
C3セル
=AND(ARRAYFORMULA(REGEXMATCH(B3,E3:E6)))
REGEXMATCH関数とARRAYFORMULA関数を用いて、B3セルの文字列がE3:E6の単語を含んでいるかそれぞれ(4回)判定しています。
さらにAND関数を使い、結果のすべてがTRUE(含む)であればTRUEを返すようにしています。
ただしこの場合も複数の文字列を判定する場合は、各セルに式を入力して個別に判定する必要があります。
画像ではC3セルに次のように入力してからC10までコピーし、B3:B10セルの文字列すべて対して判定を行っています。
絶対参照($)を使っている点に注意してください。
C3セル
=AND(ARRAYFORMULA(REGEXMATCH(B3,E$3:E$6)))