この記事を読むのに必要な時間は約 6 分です。
エクセルでFINDやFINDB関数を使って文字の位置を取得する方法です。
それぞれの関数の使い方や、なんでエラーになるのか、エラーの場合にどうしたらいいのかを書いています。
目次(リンク)
FIND、FINDB関数の使い方
FINDやFINDB関数の使い方は、それぞれ次のように書きます。
FIND関数
構文 | FIND(検索文字列,検索対象,[開始位置]) |
---|---|
意味 | 検索文字列が一番最初に何文字目に出てくるのかを取得 |
引数1:検索文字列 | この文字列をキーワードとして探す |
引数2:検索対象 | この文字列の中から、引数1の文字列を探す |
引数3:開始位置 | 省略可能、指定した文字数の位置から右側を探す、省略した場合は1になる |
下図の例ですと、「ABCDE」の中で”C”が出てくるのは3文字目というわけです。
「あいうえお」の中で、”う”が出てくるのも同じく3文字目となります。
FINDB関数
構文 | FINDB(検索文字列,検索対象,[開始位置]) |
---|---|
意味 | 検索文字列が一番最初に何バイト目に出てくるのかを取得、半角は1バイト、全角は2バイト |
引数1:検索文字列 | この文字列をキーワードとして探す |
引数2:検索対象 | この文字列の中から、引数1の文字列を探す |
引数3:開始位置 | 省略可能、指定したバイト数の位置から右側を探す、省略した場合は1になる |
FIND関数との違いは、「文字数」ではなくて「バイト数」で答えが返ってくるところです。
「ABCDE」の中で”C”が出てくるのは3バイト目ですが、
「あいうえお」の中で”う”が出てくるのは3バイト目ではありません。
1文字が2バイトなので、”う”は5バイト目となります。
省略できる引数を使ってみる
3つ目の引数の開始位置は省略可能ですが、あえて指定することもあるでしょう。
FIND関数の場合、5と書けば5文字目を含む右側を検索します。
5文字目より右側で、”B”が最初に出てくるのは7文字目のほうの”B”です。
同様に5文字目より右側で、”う”なら8文字目が最初です。
FINDB関数の場合は、5文字目ではなく5バイト目を含む右側を探します。
13バイト目にも”う”はありますが、5バイト目から探して最初に出てくる場所が返ってきます。
じゃあ、次のように書いたらどうなるでしょうか。
=FINDB(“う”,B13,6)
5バイト目と6バイト目を使って全角文字の”う”ですよね。
もしかしたら、5と返ってきそうな気もしなくはないですが、答えは13バイト目です。
FIND、FINDB関数がエラーになるときどうすればい?
エラーの場合「#VALUE!」と表示されてしまいます。
どんな時にエラーになるかというと、次の2つ。
- 検索文字列が見つからないとき
- 開始位置が検索対象の文字列より長いとき
「ABCDE」の中に”G”という文字列はないのでエラーになっています。
「あいうえおあいうえお」は10文字なのに、3つめの引数の開始位置を11にしてしまい、エラーとなっています。
0やマイナスの数字を指定してもエラーです。
「#VALUE!」のままにしておくのはカッコ悪いので、エラーかどうか判定して対処すると良いです。
ISERR、ISERROR関数で判定する
エラーかどうかを判定する関数ISERR、ISERRORなどを使います。
TRUEならエラーというわけです。
=IF(ISERROR(FINDB(“G”,B7)),”文字列が含まれないようです”,FINDB(“G”,B7))
こんな風に、IF関数でISERRORがTRUEになるとき、代わりになる文字列を表示する使い方が多いです。
まとめ:FIND、FINDB関数を使って文字の位置を取得する方法
検索文字列が最初に出てくる場所を探す関数、FIND、FINDB。
FINDは何文字目で、FINDBは何バイト目にあるのかがわかります。
エラーになるのは、検索文字列が含まれなかったり、開始位置が0以下や検索対象より大きすぎる場合です。
でも、何文字目とか何バイト目なんてそんなことを知って、何の意味があるんでしょうか。
単体で使ってもあまり意味はないですが、RIGHT、LEFT、MIDなどの関数と併用することで真価を発揮します。
どうやって使うのかについてまた記事を書くので、ぜひ見てみてくださいね。
最後までお読みいただき、ありがとうございました。