指定の文字が何バイト目かを調べる(FINDB)

広告

文字列の中から指定した文字が何バイト目にあるかを調べます。FINDB関数はバイト数で調べるため、半角文字は1バイト、全角文字は2バイトとして数えます。

=FINDB(検索文字, 文字列, 開始位置)

1番目の引数に検索したい文字を指定し、2文字目に検索対象の文字列を指定します。また3番目の文字に検索を開始する文字位置を指定します。文字位置は左端の文字が1番目でバイト数で指定します。

検索したい文字と検索対象の文字列には文字の他に数値が指定できます。文字の場合はダブルクオーテーションで囲い、数字の場合はそのまま記述して下さい。

また文字が見つからない場合は「#VALUE!」が値として帰ってきます。

例えば次のような記述となります。

=FINDB("県", "愛知県名古屋市", 1)

この場合、検索対象の先頭から"県"と言う文字を検索します。結果は5となります。

では実際に試して見ます。

1.元となるExcelを用意する

下記のようなExcelシートを用意します。

FINDB関数のテスト

商品一覧です。注意書きがある商品がありますので、注意書きがあるかどうかを調べてみます。

2.結果を表示するセルを選択

結果を表示するセルを選択します。

FINDB関数のテスト

結果を表示するセルは「C2」です。

3.関数の設定

挿入する関数を選択します。メニューの「挿入」から「関数」を選択します。

FINDB関数のテスト

「関数の検索」で「findb」を入力し、「関数名」で「FINDB」が選択されていることを確認してから「OK」ボタンをクリックします。

※実際には検索しても出てこなかったので、関数の分類で「文字列操作」を選択し、一覧の中から「FINDB」を選択します。

FINDB関数のテスト

「検索文字列」に検索したい文字又は数値を入力します。入力する場合はダブルクオーテーションを記述しなくても自動的に付与してくれます。今回は「 (」という文字列を検索します。

FINDB関数のテスト

「対象」に検索対象となる値が含まれるセルを入力します。

FINDB関数のテスト

「開始位置」に何バイト目から検索するかを入力します。

FINDB関数のテスト

最後に「OKボタンをクリックして下さい。

4.結果の表示

指定したセルに含まれる文字列の中から、指定した文字が見つかった位置をバイト数で表示されます。

FINDB関数のテスト

最初の行には見つからなかったので「#VALUE!」が表示されています。

また、セルに直接次のように入力しても結構です。

=FINDB(" (",B2,1)

また他のセルにも同様に適用してみると下記のような結果となります。(1つのセルに含まれる関数や計算式を他のセルに適用する方法は『セルに含まれる計算式を他のセルにコピーする』を参照して下さい)。

FINDB関数のテスト

FIND関数とIF関数を組み合わせて注意書き以外の部分を抜き出してみます。(LEFT関数については『指定した文字数分だけ左から文字を取り出す(LEFT)』を参照して下さい。IF関数については『条件処理(IF)』を参照して下さい。)。

セルD3に次のように入力して下さい。

=IF(ISERROR(FINDB(" (",B2,1)),B2,LEFTB(B2,FINDB(" (",B2,1)-1))

少し複雑なのですけどまず「ISERROR(FINDB(" (",B2,1))」の部分で、検索したい文字が含まれているかどうかを調べています。ISERROR関数はエラーが帰ってきた場合にTRUEになりますので検索文字が見つからない場合のように「#VALUE!」と言うエラーが帰ってきた場合TRUEとなります。エラーの場合は、文字をそのまま表示し、エラーではなく文字が見つかった場合は、検索文字の手前までの文字を取り出して表示します。

FINDB関数のテスト

また他のセルにも同様に適用してみると下記のような結果となります。

FINDB関数のテスト

( Written by Tatsuo Ikura )