FIND関数とは

ファインド関数はFind、つまり「(探して)見つけ出す、捜し出す」という英語のままの意味でExcelでのFIND関数は指定したセルの文字列を検索して、それが最初に現れる位置を左端から数えて返す。という機能を持っています。
英語Find(ファインド)の呼びと同じようにFIND(ファインド)関数と呼ぶ事が多いと思います。
この関数には「SEARCH 」「 SEARCHB」 関数という非常によく似た関数がありますがほぼ同じで、違いは↓

SEARCH関数 → 大文字と小文字は区別されない。
FIND関数 →  大文字と小文字を区別する。(完全一致)

です。これだけ見るとSEARCH使った方がいいんじゃない?ってなりますが

「Aa」という文字列で「a」を見つけたい場合、SEARCH関数だと大文字は区別しないので、大文字のAはaという事で1を返してきます。
全角をASC関数などで抹消した後にやっても、同じアルファベットの大小で位置が変わってしまうのはいただけません、「大小関係なく最初に現れるのはどこか」という課題ならばSEARCH一択ですが

FINDは完全一致なのでvalueを返しますが、サーチの場合はaはAなので、1を返すわけですね、品番や製番、管理番号を確認する場合には大小で重なる場合もありますので、やはり完全一致のFINDを使用しましょう。

FINDBというバイトでカウントする関数も存在します。
かな、漢字など全角文字は2バイトでカウントする為こんな感じになります。

2文字しかないのに3が返ってくるので驚くかもしれませんが、半角がどこに入っているか分かる事でそこで切り分けたり、検索用文字列で使用したりデータを分析しやすくなるので、覚えておきましょう。

FIND関数もLEN関数と同じようにこの関数で絞って組み込むというよりは、この関数の結果を使って分析する事が多いのも特徴ですね。

最後から検索、右から検索したい。

もし検索したい文字列が「最初に出てきた検索結果を右から検索したい」ならば簡単だ。

最初のハイフンは左から3番目、右から10番目となっている。
この例文は全部で12文字なので、それを左からの検索結果を引いて1を足したのだ。これでは面白くないので、もう一つ。
一つ目の検索結果を無かったことにしてしまえば良いのだ。

D4セルに入っている数式をコピペ出来るようにしようかと思いましたが、自分の環境で入力した方が圧倒的に早いので、少しずつ打ってみましょう。

これは検索したい文字「-」ハイフン(B2セル)が1つだった場合は最初の例のを実行する。

検索したい文字が2つあった場合は、SUBSTITUTEという関数を使って、2つ目の検索結果を除外用文字列にして、あえてそれをFINDで検索に行くのだ!
すると2つ目を除外用文字列に変えているので、2つ目までが左から何文字目か分かる訳です。
後は1+全部の文字数を引けば結果が出ます。

検索したい文字が3つあった場合は、2つあった場合の数式を3に変えれば良いのですが、それでは芸が無いので、ちょっとやり方を変えてみます。

SUBSTITUTEで1文字目を変えると「AB★12345-ABC-DEF」
この結果をSUBSTITUTEで1文字目を変えると「AB★12345★ABC-DEF」
というように1文字目を変え続けるだけで、結果は進んでいきます。
後はこのハイフンまでの位置を計算し、1+LENするだけ。

最後はLENで全体の文字数をSUBSTITUTEで検索したい文字を全て消した文字数を引けば、何個同じ文字列が重複して存在するのか分かります。
なので、最後の検索したい文字列だけを変換すれば
「最後に現れる文字の位置」が分かります。後は1+LEN-です。

もちろん右から検索したいのは様々なケースが存在しますので、一概にコレで全部OKというわけではありませんが、一つのヒントにはなるのではないでしょうか。諦めずに加工すれば出来る、ゼッタイ!

imakara

コメント