スポンサーリンク
下図でExcelの各セルにおいて、<文字列「県」が含まれているかどうか>を判定するという場合、関数でやるのは意外と面倒だ。
それ専用の関数くらいあって然るべきだと思うが、残念ながらそれが無い。
通常の解法
まずその前に、「特定の文字列を含む」という判定には、ワイルドカードというもの、特に「*」記号のワイルドカードを使うのが定石だ。
そして今回のような場合、COUNTIFS関数とワイルドカード「*」を使い
=COUNTIFS( $A1 , “*県*”)
というようにするのが有効な方法となる。
COUNTIFS関数と言ったら通常、複数のセル範囲を対象にするもので、こんな風に1個のセルだけを対象にするのは変則的な方法なのだけど。
まあこのままだと、返ってくる答えは「1」か「0」かのみになるので、もう少し分かりやすい答えにしたかったら
=IF( COUNTIFS ($A1,”*県*”) = 1 , “県である” , “県ではない” )
というようなIF文にする方法がある。
あるいは少し省略形にして
=COUNTIFS( $A1, “*県*” )=1
とか
=COUNTIFS($A1,”*県*”)>0
とすれば、TRUE/FALSE 形式のみになるが、割と分かりやすい答えが返ってくる。
別解
別の方法として、文字列を検索するFIND関数かSEARCH関数を使った時にエラーになるかどうか問う、という観点で
=ISERROR(FIND(“県”,$A1))
と、エラー判定するISERROR関数と組み合わせる方法がある。
ただこれだと、文字列を含むときは結果にFALSEが返り、文字列を含まない時はTRUEが返るという本来と逆っぽい答えになるので、
=NOT(ISERROR(FIND(“県”,$A1)))
としてTRUE/FALSEを逆転させるとか、
=IF(ISERROR(FIND(“県”,$A1)),”県でない”,”県ではある”)
というようにするのが良いだろう。
ただこの別解は、TRUE/FALSEを逆転させて考えないといけないし、登場する関数の数も多くなって面倒なので、無理に使う必要はないだろう。NOT関数なんて、私も実際に使ったこと無いし。
特定の文字列で「始まる」「終わる」の場合
今回、解決方法がちょっと面倒になったのは、特定の文字列「を含む」ことの判定だったからで、特定の文字列で「始まる」「終わる」の場合なら簡単だ。
文字列「町」で終わる、という判定なら
=RIGHT($A1,1)=”町”
とすれば良い。
また、文字列「北海道」で始まる、という判定なら
=LEFT($A1,3)=”北海道”
とすれば良いだけとなる。
スポンサーリンク