Excel 文字列が含まれているかどうか関数で判定する方法

Excel 関数

スポンサーリンク

下図でExcelの各セルにおいて、<文字列「県」が含まれているかどうか>を判定するという場合、関数でやるのは意外と面倒だ。

それ専用の関数くらいあって然るべきだと思うが、残念ながらそれが無い。

通常の解法

まずその前に、「特定の文字列を含む」という判定には、ワイルドカードというもの、特に「*」記号のワイルドカードを使うのが定石だ。

そして今回のような場合、COUNTIFS関数とワイルドカード「*」を使い

=COUNTIFS( $A1 , “*県*”)

というようにするのが有効な方法となる。

COUNTIFS関数と言ったら通常、複数のセル範囲を対象にするもので、こんな風に1個のセルだけを対象にするのは変則的な方法なのだけど。

Excel COUNTIF関数とCOUNTIFS関数で条件に合致するデータの件数をカウント

まあこのままだと、返ってくる答えは「1」か「0」かのみになるので、もう少し分かりやすい答えにしたかったら

=IF( COUNTIFS ($A1,”*県*”) = 1 , “県である” , “県ではない” )

というようなIF文にする方法がある。

あるいは少し省略形にして

=COUNTIFS( $A1, “*県*” )=1

とか

=COUNTIFS($A1,”*県*”)>0

とすれば、TRUE/FALSE 形式のみになるが、割と分かりやすい答えが返ってくる。

Excel IF関数など使わずTRUE/FALSEで結果表示

別解

別の方法として、文字列を検索するFIND関数かSEARCH関数を使った時にエラーになるかどうか問う、という観点で

=ISERROR(FIND(“県”,$A1))

と、エラー判定するISERROR関数と組み合わせる方法がある。

ただこれだと、文字列を含むときは結果にFALSEが返り、文字列を含まない時はTRUEが返るという本来と逆っぽい答えになるので、

=NOT(ISERROR(FIND(“県”,$A1)))

としてTRUE/FALSEを逆転させるとか、

=IF(ISERROR(FIND(“県”,$A1)),”県でない”,”県ではある”)

というようにするのが良いだろう。

ただこの別解は、TRUE/FALSEを逆転させて考えないといけないし、登場する関数の数も多くなって面倒なので、無理に使う必要はないだろう。NOT関数なんて、私も実際に使ったこと無いし。

Excel FIND関数とSEARCH関数

特定の文字列で「始まる」「終わる」の場合

今回、解決方法がちょっと面倒になったのは、特定の文字列「を含む」ことの判定だったからで、特定の文字列で「始まる」「終わる」の場合なら簡単だ。

文字列「町」で終わる、という判定なら

=RIGHT($A1,1)=”町”

とすれば良い。

また、文字列「北海道」で始まる、という判定なら

=LEFT($A1,3)=”北海道”

とすれば良いだけとなる。

Excel 文字列抽出の関数 LEFT・RIGHT・MID

スポンサーリンク