今回はFIND関数(ファインド)、FINDB関数(ファインド・ビー)についてご紹介します。

ExcelのFIND関数は、指定した検索文字列を他の文字列の中で検索して、
その検索文字列が最初に現れる位置を左端から数えた位置を返します。
大文字と小文字を区別してくれます。
1バイト文字(半角英数字)も2バイト文字(日本語)も、各文字が常に1として数えられます。
FINDB関数は、指定した検索文字列を他の文字列の中で検索して、
その検索文字列が最初に現れる位置を左端から数えた位置をバイト数で返します。
大文字と小文字を区別します。2バイト文字(日本語)を2と扱います。

FIND関数

FIND関数のできることは、文字列を検索します(大文字と小文字を区別します)
書式、=FIND(検索文字列, 対象, 開始位置)となります。
検索文字列(必須):検索する文字列を指定します。
          ※重要ワイルドカード文字は使用できません。
対象(必須)   :検索文字列を含む文字列を指定します。
開始位置(省略可):検索を開始する位置を指定します。省略すると1として処理されます。
          ※重要開始位置を指定した場合でも、対象の先頭文字からの位置が返されます。

「A2」のセルに文字列「Microsoft Office Excel」と入力されています。
最初の半角大文字の「O」の位置を返すように考えます。
SEARCH関数の場合は大文字と小文字を区別しないため「7」が返されます。
「D2」に=FIND(“O”,A2)と入力します。結果は「11」と返ります。

次に最初の小文字の「o」の位置が返される様に考えます。
「D3」に=FIND(“o”,A2)と入力します。結果は「5」を返してくれますね!

応用1:氏名から性と名前を取り出す。
山田さんをの性だけを取り出すにはLEFT関数でも取り出せますが、佐々木さんや堺さんがいますので
オートフィルでは使えません!
そこで、LEFT関数とFIND関数を組み合わせて考えてみましょう。

氏名から姓と名を別のセルに取り出す
今回は姓と名が半角スペースで区切られたかたちで1つのセルに入力された氏名から、姓と名をそれぞれ別のセルに抽出する方法を紹介します。
姓と名が半角スペースで区切られたかたちで、氏名がA2~A6セルに入力されています。
B2~B6セルに姓、C2~C3セルに名を取り出して行きます。
どのような数式を入力すればよいのか、先頭行のB2セルで考えてみましょう。
まずはA2セルの氏名で、姓と名の区切りとなっている半角スペースの位置をFIND関数で調べます。
そうすると、FIND関数は「FIND(” “,A2)」と記述すればよいことになりませんか?
A2セルの「山田 圭子」では、姓が「山田」の2文字であるため、半角スペースの位置は3と検索されます。
半角スペースの1文字前が姓の最後の文字であり、その位置は姓の文字数と等しいことになります。
なので、「FIND(” “,A2)-1」をLEFT関数の引数「文字数」に指定すればよいことになります。
引数「文字列」には、氏名が格納されたA2セルを指定すればよい事になりますね。
=LEFT(A2,FIND(” “,A2)-1)
これでB2セルに姓が抽出されます。
この数式をB6セルまでオートフィルすると、各セルに姓が抽出されます。1文字でも2文字でも3文字の姓でも抽出することができました。

続いて、名前を抽出してみましょう。
名を抽出する数式を先頭行のC2セルで考えてみます。
半角スペースの位置は姓と同様に、「FIND(” “,A2)」で求められますね。
名の開始位置は半角スペースの1文字後ろなので、「FIND(” “,A2)」に1を足せば求められる事になります。
そして、MID関数を用いて、氏名のA2セルを引数「文字列」に指定し、引数「開始位置」に「FIND(” “,A2)」+1」を指定します。
引数「文字数」ですが、多めの文字列を指定しておけば、その文字数以内で抽出できるようになっています。
今回は5を指定してみましょう。
=MID(A2,FIND(” “,A2)+1,5)
これでC2セルに名が抽出されました。この数式をC6セルまでオートフィルすると、各セルに名が抽出されました。

どうでしたか!文字数が違う名字や名前があるので今の関数の応用を使えば簡単に抽出できましたね!
使ってみてください!!

FINDB関数

FINDB関数の出来ることは、文字列を検索してバイト数を求める(大・小文字を区別)ことができます。
書式は、FINDB(検索文字列, 対象, 開始位置)になります。FIND関数と同じ引数です。
検索文字列(必須):検索する文字列を指定します。
          ※重要ワイルドカード文字は使用できません。
対象(必須)   :検索文字列を含む文字列を指定します。
開始位置(省略可):検索を開始する位置を指定します。省略すると、1として処理されます。
          ※重要開始位置を指定した場合でも、対象の先頭文字からの位置が返されます。

下の表では「A2」のセルに「excel関数 EXCEL関数」と文字列が記入されています。
半角大文字の「L」は、大文字・小文字を区別してくれ、バイト数を抽出してくれます。結果は「15」が抽出されます。
FIND関数では13が抽出されます。

FIND関数、FINDB関数のまとめ

「FIND」(ファインド)関数と、「FINDB」(ファインド・ビー)関数はとても内容が似ていましたが、
使用用途によって使い分けてみてはいかがでしょうか。
反対に、このような関数があることを初めて知った。という方は、ぜひ積極的に活用してみてください。
関数の数はまだまだありますので、全部を使いこなすのは難しいかもしれませんが、
案外知り始めると止まらなくなってしまうのが面白い所かもしれません。
数多くの関数を使い分けることができれば、お仕事も効率よくスピーディーになるかもしれませんね。
今まで関数をあまり活用してこなかった方も、関数をより効率よく使いこなしたいという方も、
この動画とブログを見て頂き参考にして頂ければ嬉しく思います。
これからも引き続き関数動画・ブログをアップして参りますので、気になる関数があったらまずはソフトキャンパスの動画を確認してみてください!