好きこそものの上手なれ

他人から見れば、下手の横好きですが、そっと見守ってください。

Excel 検索文字列の位置 FIND関数, SEARCH関数

私はワークシート関数で、あまりFIND関数やSEARCH関数を使っておりませんでした。


①位置データを利用して文字の抽出
=FIND("りんご", A1, 1)


FINDの最後の1は検索開始位置で、1の場合は省略可能です。エクセルは0スタートでなく1スタート(1オリジン)です。


見つけた位置を使って「りんご」の後ろの1文字列を取り出す
=MID(A1, FIND("りんご", A1, 1)+LEN("りんご"), 1)
※これは、りんごが必ずある前提です。




②有無の判定


=ISERROR(FIND("りんご", B2, 1))


FIND関数で「りんご」がない場合は、#VALUE!を返すので、ISERRORで真になります。
「りんご」がある場合は、見つかった位置の数値を返しますので、ISERRORで偽になります。これでIFを使えば条件分岐できます。



【応用】
大文字小文字を区別せず「A」「a」を同じ扱いで処理したい場合は、FINDでなくSEARCH関数を使います。


関数B のBは全角を2文字として扱うことを意味します。
FINDB, SEARCHBがそれです。


一番わかりやすいのが文字列の長さでLenBを使うと全角を2文字で計算します。
=LEN(”青森りんごA")  →6
=LENB(”青森りんごA") →11