この記事を読むのに必要な時間は約 6 分です。

 

エクセルでFINDやFINDB関数を使って文字の位置を取得する方法です。

 

それぞれの関数の使い方や、なんでエラーになるのか、エラーの場合にどうしたらいいのかを書いています。

スポンサーリンク

FIND、FINDB関数の使い方

FINDやFINDB関数の使い方は、それぞれ次のように書きます。

FIND関数

構文 FIND(検索文字列,検索対象,[開始位置])
意味 検索文字列が一番最初に何文字目に出てくるのかを取得
引数1:検索文字列 この文字列をキーワードとして探す
引数2:検索対象 この文字列の中から、引数1の文字列を探す
引数3:開始位置 省略可能、指定した文字数の位置から右側を探す、省略した場合は1になる

 

下図の例ですと、「ABCDE」の中で”C”が出てくるのは3文字目というわけです。

 

「あいうえお」の中で、”う”が出てくるのも同じく3文字目となります。

EXCEL FIND関数を使って文字の位置を取得する方法

FINDB関数

構文 FINDB(検索文字列,検索対象,[開始位置])
意味 検索文字列が一番最初に何バイト目に出てくるのかを取得、半角は1バイト、全角は2バイト
引数1:検索文字列 この文字列をキーワードとして探す
引数2:検索対象 この文字列の中から、引数1の文字列を探す
引数3:開始位置 省略可能、指定したバイト数の位置から右側を探す、省略した場合は1になる

 

FIND関数との違いは、「文字数」ではなくて「バイト数」で答えが返ってくるところです。

 

「ABCDE」の中で”C”が出てくるのは3バイト目ですが、
「あいうえお」の中で”う”が出てくるのは3バイト目ではありません。

 

1文字が2バイトなので、”う”は5バイト目となります。

EXCEL FINDB関数を使って文字の位置を取得する方法

省略できる引数を使ってみる

3つ目の引数の開始位置は省略可能ですが、あえて指定することもあるでしょう。

 

FIND関数の場合、5と書けば5文字目を含む右側を検索します。

 

5文字目より右側で、”B”が最初に出てくるのは7文字目のほうの”B”です。
同様に5文字目より右側で、”う”なら8文字目が最初です。

EXCEL_FIND、FINDB関数を使って文字の位置を取得する方法

 

FINDB関数の場合は、5文字目ではなく5バイト目を含む右側を探します。

 

13バイト目にも”う”はありますが、5バイト目から探して最初に出てくる場所が返ってきます。

EXCEL_FIND、FINDB関数を使って文字の位置を取得する方法

じゃあ、次のように書いたらどうなるでしょうか。

 

=FINDB(“う”,B13,6)

 

5バイト目と6バイト目を使って全角文字の”う”ですよね。
もしかしたら、5と返ってきそうな気もしなくはないですが、答えは13バイト目です。

FIND、FINDB関数がエラーになるときどうすればい?

エラーの場合「#VALUE!」と表示されてしまいます。

 

どんな時にエラーになるかというと、次の2つ。

  • 検索文字列が見つからないとき
  • 開始位置が検索対象の文字列より長いとき

 

「ABCDE」の中に”G”という文字列はないのでエラーになっています。

EXCEL_FIND、FINDB関数でエラーになった時は?

 

「あいうえおあいうえお」は10文字なのに、3つめの引数の開始位置を11にしてしまい、エラーとなっています。

 

0やマイナスの数字を指定してもエラーです。

EXCEL_FIND、FINDB関数でエラーになった時は?

「#VALUE!」のままにしておくのはカッコ悪いので、エラーかどうか判定して対処すると良いです。

ISERR、ISERROR関数で判定する

エラーかどうかを判定する関数ISERR、ISERRORなどを使います。

 

TRUEならエラーというわけです。

EXCEL_FIND、FINDB関数でエラーになった時は?

 

=IF(ISERROR(FINDB(“G”,B7)),”文字列が含まれないようです”,FINDB(“G”,B7))

 

こんな風に、IF関数でISERRORがTRUEになるとき、代わりになる文字列を表示する使い方が多いです。

スポンサーリンク

まとめ:FIND、FINDB関数を使って文字の位置を取得する方法

検索文字列が最初に出てくる場所を探す関数、FIND、FINDB。

 

FINDは何文字目で、FINDBは何バイト目にあるのかがわかります。
エラーになるのは、検索文字列が含まれなかったり、開始位置が0以下や検索対象より大きすぎる場合です。

 

でも、何文字目とか何バイト目なんてそんなことを知って、何の意味があるんでしょうか。

 

単体で使ってもあまり意味はないですが、RIGHT、LEFT、MIDなどの関数と併用することで真価を発揮します。

 

どうやって使うのかについてまた記事を書くので、ぜひ見てみてくださいね。

 

最後までお読みいただき、ありがとうございました。