Googleスプレッドシートで、条件分岐ができるIF関数・IFS関数ですが、ある特定の文字列を含んでいたら~するのような条件式を書くときにコツが必要なので、この記事ではその説明・解説ができればと思います。
そもそものIF関数・IFS関数については、こちらの記事を参考にしてください。
こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。新卒ブラック企業努め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますようにの精神で記事書いてます!!
「文字列を含んでいたら~する」の条件式
どんなキャンペーンやねん!!!笑
さて、この上司からのオーダーですが、簡単そうに見えてすこし難しいです。
論理式(条件):もし名前に沢が含まれていたら→A2=”*沢*”
TRUE値(正の場合):◯を出力する→“◯“
FALSE値(誤の場合):✕を出力する→“✕”
ワイルドカードを用いて、*沢*とすれば条件式が反応しそうですが、、、IF関数はワイルドカードに反応しないんです。
これは駄目な例です!!!
=if(A2="*沢*","◯","✕")
沢を含んでいる『相沢さん』に反応してほしいところですが、反応してくれません。
IF関数・IFS関数は、文字列に関する条件式にワイルドカードが使えないことを覚えておいてください。
countif関数を用いる方法
では、どうしたらよいのでしょうか。一番分かりやすいのが、countif関数と併用する手法になります。
論理式(条件):もし名前に沢が含まれていたら→countif(A2,”*沢*”)=1
TRUE値(正の場合):◯を出力する→“◯“
FALSE値(誤の場合):✕を出力する→“✕”
※『countif関数はワイルドカードが反応する』を利用しています。沢を含んでいれば、countifで1となるので、1だったら正という形にしてあります。また、沢の字が複数回名前に出現したとしても、”*沢*”でカウントされるのは、1ですので、=1の条件設定で大丈夫です。
=if(countif(A2,"*沢*")=1,"◯","✕")
REGEXMATCH関数を用いる方法
また、REGEXMATCH関数を用いる方法もあります。
REGEXMATCH関数は、セルの文字列に、指定した正規表現に基づく文字列が含まれているどうかを検出してくれる関数です。
論理式(条件):もし名前に沢が含まれていたら→REGEXMATCH(A2,”沢”)
TRUE値(正の場合):◯を出力する→“◯“
FALSE値(誤の場合):✕を出力する→“✕”
※『沢』の字が含まれているだけであれば、正規表現部分に『”沢”』と指定してあげるだけで大丈夫です。REGEXMATCH関数は、正であれば、trueを返します。
正規表現は非常に便利なもので、例えば名字の最初の文字が『沢』のときだけ拾いたいときは、『”^沢”』と表現すれば抽出可能になります。
=if(REGEXMATCH(A2,"沢"),"◯","✕")
まとめ
IF関数・IFS関数で、文字列を含んでいるかどうかで条件式を書きたい場合、直接ワイルドカードを用いて使用することは出来ません。
COUNTIF関数でワイルドカードを指定して抽出するか、REGEXMATCH関数で正規表現検索するなどして、ワンクッション挟む必要があります。