excelIF 関数で「xx という文字を含む場合」の分岐処理
A 列 ([項目] 列) のセルに「A」という文字列が含まれていたら、B 列 ([表示] 列) に「該当」という文字列を表示し、それ以外は空白を返す、としたいとします。
"excel2021511-500-1"
![](https://blogimg.goo.ne.jp/user_image/77/60/aa7a4a5ba35e683186271a39d4c160c7.jpg)
A 列の値が数値なら、「~以上」 (>=) とか、「~以外」 (<>) というあいまいな条件を IF 関数の論理式の部分に直接かけるのですが、今回のように A 列の値が文字列の場合は、「A を含む」 (“*A*”) を書けないのです。(書けないというより、書いても正しく動作しない)
"excel2021511-500-2"
![](https://blogimg.goo.ne.jp/user_image/27/ac/7d5a98e85296155da3cc02af13095198.jpg)
この場合は、IF 関数と COUNTIF 関数を組み合わせて使用します。
COUNTIF 関数で「A」が含まれているかどうかチェックする
まずは練習というか、確認というか。
COUNTIF 関数で A 列のセルに「A」という文字が含まれているかどうかを作業セル (最終的に非表示にしたり削除したりするセル) でチェックしてみます。
excel「=COUNTIF(チェックしたいセル , チェックしたい文字列)」となるように数式を作成します。
たとえば下図の場合は、「=COUNTIF(A2 , "*A*")」という数式を作成しています。「A」が含まれていれば「1」が、含まれていなければ「0」が返ります。(厳密には、含まれているセルが 1 つ、含まれているセルが 0 ということだけれど)
"excel2021511-500-3"
![](https://blogimg.goo.ne.jp/user_image/43/72/d332b1548ca83badc39e1893c167edc3.jpg)
IF 関数で表示を分岐する
前の手順で確認用に作った COUNTIF 関数の数式を IF 関数の論理式として使用します。
B 列に、「=IF(COUNTIF(チェックしたいセル , チェックしたい文字列) , "該当" , "")」となるように数式を作成します。
たとえば下図の場合は、「=IF(COUNTIF(A2 , "*A*") , "該当" , "")」という数式を作成しています。
下線の部分が IF 関数で処理を分岐するためにチェックを行う論理式です。
ワークシートでは、「1」は True、「0」は False と認識できるので、COUNTIF 関数の結果が 1 なら Ture であるため「該当」という文字列が、0 なら False であるため空白が返ります。
"excel2021511-500-4"
![](https://blogimg.goo.ne.jp/user_image/61/19/ab340d4ad0b885666bec9a3708065a12.jpg)
B 列のほかのセルに数式 (セル) をコピーし、不要な作業セルを削除すれば作業終了です。
"excel2021511-500-5"
![](https://blogimg.goo.ne.jp/user_image/02/04/57ea85325da1596ca234583b18e3c2b0.jpg)
今回、“該当” とか空白とかの文字列を返すという単純な処理で記述した処理の部分は、実務ではもっと複雑かもしれません。
excel IF 関数の第 2 引数や第 3 引数には、True / False の場合の “処理” を記述できるので、さらに関数が組み込まれているかも。文字列を返すなどの単純な数式でまずはやってみて、それから実務に対応させる数式になるように修正して育ててください。
ポイントは、IF 関数の論理式には、文字列の場合は直接的にあいまい条件を指定できない、ということでしょうか。