- IF関数とCOUNTIF関数と組み合わせることで、ワイルドカードにマッチするかどうかの判定結果を返すことができます。
- 正規表現とのマッチを判定できるREGEXMATCH関数と組み合わせるのも一つの方法です。
手順
右の画像では、B3セルの文字列が「福*」というワイルドカードにマッチしているかどうか、つまり文字列が「福」の字で始まるのかどうかを、D3セルに入力した式で判定しています。
D3セル
=IF(COUNTIF(B3,"福*"),"福で始まる","福以外で始まる")
単純に「=IF(B3="福*",……」などとやってもIF関数の条件式ではワイルドカードを使うことができないのでうまくいきません。
そこでワイルドカードが使えるCOUNTIF関数を使い、「福*」にマッチする文字列の数を数える(結果は0か1にしかなりません)ことで対応しています。
なお「COUNTIF(B3,"福*")」は「COUNTIF(B3,"福*")>0」とか「COUNTIF(B3,"福*")=1」とした方がわかりやすいですが、0以外の数値はTRUE(真)とみなされるので省略しています。
さらに式を下方にコピーした結果です。
判定がうまくいっているのがわかります。
こちらでは「*島*」というワイルドカードにマッチするか、つまり「島」の字を含むかどうかの判定をしています。
D3セルの式は次のとおりです(D4以降も同様)。
D3セル
=IF(COUNTIF(B3,"*島*"),"島を含む","島を含まない")
REGEXMATCH関数への移行
さて、REGEXMATCH関数を使えば正規表現とのマッチングを判定できますので、上記の例のCOUNTIF関数の代用とすることができます。
というかGoogleスプレッドシートではこちらが本筋のやり方かと思います。
画像ではD3セルに次のような式を入力し、上記の例と同じく「福」の字で始まるかどうかを判定しています(D4以降も同様)。
D3セル
=IF(REGEXMATCH(B3,"^福"),"福で始まる","福以外で始まる")
正規表現の「^」は文字列の先頭を表しますので、「^福」は「文字列の先頭にある『福』の字」にマッチします。
正規表現はワイルドカードと比べて難解ですが非常に応用範囲が広く、覚える価値のあるスキルです。
こちらも同様に「島」を含むかどうか判定しています。
D3セル
=IF(REGEXMATCH(B3,"島"),"島を含む","島を含まない")
REGEXMATCH関数では(ワイルドカードでの考え方と異なり)第2引数で指定した正規表現にどこか1つ該当すればマッチするものと判定されます。
よってREGEXMATCH関数の第2引数は単純に「島」の1字で済みます。