Excel(エクセル)FINDB関数の使い方|特定の文字列までのバイト数を返す
FINDB関数はExcelで特定の文字列をバイト数で検索する関数の一つです。ここではFINDB関数の使い方について図解します。
使用関数:FINDB
FINDB関数とは?
FINDB関数は指定した文字列が対象文字列の前(左)から何バイト目にあるかを見つけてくれます。
FINDBの読み方と意味
FINDBは「ファインド・ビ-」と読みます。FINDは「見つける」「探す」を意味する英語、Bは「Byte(バイト)」の略でExcelの文字単位の一つ。文字列をバイト単位でカウントする文字列操作の関数名には皆この「B」が末尾に付いています。
バイト数とは?
Excelの文字単位は「文字数」と「バイト数」があり、FINDBはバイト数で測って文字列を検索します。
1バイト文字は半角です。全角は2バイトとカウントされます。
日本語の文章はFINDBで検索すると実数の2倍になるということですね。
通常、文字列を検索して位置を求めるのにはFIND関数を使います。FIID関数は全角・半角にかかわらず、1文字を1とカウントした文字数で文字列の位置を返します。
FIND関数の使い方や応用例はこちらで詳しく!
FINDB関数の使い方
「数式」タブ→「関数ライブラリ」→「文字列操作」のFINDBをクリックします。
FINDB関数の書式の構成はこうなります。「検索文字列」と「対象」が必須、「開始位置」は任意です。
以下の社員コードからFINDB関数でハイフンの位置を調べてみましょう。
第一引数「検索文字列」
位置を取得したい文字や文字列を指定します。
- 空白を表す””を指定すると、「開始位置」で指定した値が返ります。「開始位置」省略なら1が返ります
- 英語の大文字と小文字は区別されます。Aとaは異なる文字と見なされます
- 全角文字と半角文字は区別されます。全角スペースと半角スペースは異なる文字と見なされます
この例では第一引数「検索文字列」に「“-“」と入力します。
第二引数「対象」
「検索文字列」の位置を検索する元の文字列を指定します。
- 対象の文字を数えるのに全角は2、半角は1とカウントされます。
- 「検索文字列」で指定した値が見つからない時は#VALUE!エラーが返ります
この例ではコードの入ったセルをクリックで指定します。
ここまでが必須の引数です。「検索文字列」が一つだけなら、この時点で数式を確定させましょう。
「対象」に「検索文字列」が複数含まれ、その2番め以降に登場する「検索文字列」の位置を取得したい場合は次の第三引数「開始位置」の指定へ進みます。
FINDB関数の引数「開始位置」は検索文字列が複数含まれる場合に使う
「開始位置」は「対象」のどの位置から検索を開始するかを、先頭の1バイトを1としてバイト数で指定します。
- 「対象」に「検索文字列」が複数ある場合に、何番目の「検索文字列」の位置を数えるかを指定できます
- 「開始位置」はあくまで「検索を開始する位置」です。「開始位置」より前にある文字列を検索の対象外とするだけで、「開始位置」を指定したとしてもFINDB関数が数えるのは「対象」の先頭からになります
例えば、ハイフンが複数含まれるコード番号を「対象」として、2番目のハイフンの位置を取得するとします。「開始位置」にFINDB関数をネストし、1番目のハイフンの位置を取得して+1を付加します。これにより1番目のハイフンの位置の次のバイト数から検索が開始され、2番目のハイフンの位置が取得できます。
2番目にある検索文字列(ハイフン)が「対象」の先頭から何バイト目の位置にあるかが返りました。
数式 =FINDB(“-“,A2,FINDB(“-“,A2)+1)
「開始位置」を省略した場合は「対象」の先頭位置「1」を指定したものと見なされます。
FINDB関数とSEARCHB関数の違いについて
FINDBとSEARCHBは共に特定の文字列の位置を求める文字列操作の関数です。引数も同じですが、どの場面でどう使うかといった点でいくつか違いがあります。
- FINDB関数は英字の大文字・小文字を区別しますが、SEARCHB関数は区別しません
- FINDB関数はワイルドカードを使った曖昧検索はできませんが、SEARCHB関数は曖昧検索ができます
Excelとexcelが混在した文字列でEまたはeの位置情報を取得したい、(株)や(合)が対象内に含まれているかを調べたいというような場合にはSEARCHB関数を使用します。
ワイルドカード文字で曖昧検索するSEARCHB関数の使い方、はこちらで詳しく