Excel

ExcelのFINDB関数でバイト単位で文字列を検索しよう!【基本から応用まで】

ExcelのFINDB関数は、文字列内で特定の文字や部分文字列が、バイト単位で何番目に位置するかを調べるための関数です。特に、Shift JISなどの2バイト文字(日本語の漢字やかななど)を扱う場合に便利です。この記事では、FINDB関数の基本的な使い方から応用的な活用法までを詳しく解説します。

FINDB関数とは?

FINDB関数は、バイト単位で特定の文字や部分文字列が、他の文字列内の何バイト目にあるかを検索し、その位置を数値で返す関数です。文字列内の位置をバイト数で計算するため、英数字の1バイト文字だけでなく、2バイト文字(日本語など)の検索においても、バイト数で位置を正確に把握することができます。

FINDB関数の基本的な構文

=FINDB(検索文字列, 対象文字列, [開始位置])

  • 検索文字列: 検索したい文字列や文字を指定します。
  • 対象文字列: 検索対象となるテキストやセルを指定します。
  • 開始位置(省略可能): 検索を開始する位置をバイト単位で指定します。省略した場合、最初の文字から検索されます。

FINDB関数の動作イメージ

たとえば、セルA1に「Excel関数」と入力されているとします。この中で「関」がバイト単位で何バイト目にあるかを知りたい場合、FINDB関数を次のように使います。

=FINDB(“関”, A1)

結果は6となります。なぜなら、「Excel」の英字は1文字1バイトですが、「関」は2バイト文字のため、1文字が2バイトとして計算されるからです。

FINDB関数の実際の例

例えば、以下のようにFINDB関数を使って、特定の文字列がバイト単位で何バイト目にあるかを確認できます。

セル範囲 FINDB関数の使用例 結果
“Hello こんにちは” =FINDB(“こ”, A1) 7
“Excel関数” =FINDB(“関数”, A2) 6
“12345ABC” =FINDB(“A”, A3) 6

このように、FINDB関数は1バイト文字と2バイト文字を区別して位置を計算するため、日本語を含む文字列の中で特定の文字を探す際に非常に便利です。

開始位置を指定する例

FINDB関数では、検索を開始する位置をバイト単位で指定することができます。たとえば、セルA1に「Apple 日本語」という文字列が入力されていて、「日」がバイト単位でどこにあるかを検索するには次のようにします。

=FINDB(“日”, A1, 6)

この場合、開始位置を6バイト目から指定して検索し、結果は7バイト目と表示されます。

FINDB関数の応用例

日本語と英語が混在したデータの検索

日本語と英語が混在するデータの中で特定の単語や文字をバイト単位で検索したい場合、FINDB関数を使用して正確な位置を把握できます。たとえば、セルA2に「Excelで学ぶ日本語」という文字列がある場合、「日」という文字が何バイト目にあるかを次のように検索します。

=FINDB(“日”, A2)

結果は9バイト目に「日」があることを示します。

LEFTB関数と組み合わせて一部の文字を抽出

LEFTB関数と組み合わせて、文字列の一部をバイト単位で抽出する際にFINDB関数を活用できます。たとえば、「Excel関数」の文字列から「Excel」だけを抽出したい場合は、次のように使います。

=LEFTB(A2, FINDB(“関”, A2)-1)

この数式では、FINDB関数で「関」のバイト位置を検索し、その直前までの文字列「Excel」をLEFTB関数で抽出します。

文字列が含まれているかの確認

FIND関数と同様に、FINDB関数も特定の文字列が含まれているかどうかの確認に使えます。FINDB関数は文字列が見つからなかった場合、#VALUE!エラーを返すので、これを利用して存在を確認できます。

=IF(ISNUMBER(FINDB(“関数”, A2)), “含まれている”, “含まれていない”)

この数式では、「関数」がセルA2に含まれていれば「含まれている」、含まれていなければ「含まれていない」と表示されます。

FINDB関数の便利な豆知識

バイト単位の計算に特化

FINDB関数は、文字列をバイト単位で計算します。これは特に日本語や中国語のような2バイト文字が含まれる文字列の処理に有効です。通常のFIND関数では文字単位での検索になりますが、FINDB関数を使うことで、より正確に位置を把握できます。

大文字と小文字を区別

FINDB関数は、大文字と小文字を区別して検索します。たとえば、セルに「ABC」が入力されていて、「a」を検索した場合は、FINDB関数は見つからずに**#VALUE!エラー**を返します。もし大文字・小文字を区別せずに検索したい場合は、SEARCHB関数を使うと良いでしょう。

英数字と日本語が混在している場合の注意点

FINDB関数は、1バイト文字(英数字など)と2バイト文字(日本語や中国語など)の違いを認識します。1バイト文字は1バイトとして扱われ、2バイト文字は2バイトとして計算されます。この点に注意しながらバイト数を指定することが重要です。

FINDB関数のよくあるエラーと対処法

#VALUE!エラー

#VALUE!エラーは、検索対象の文字列が見つからなかった場合に発生します。たとえば、次のように入力するとエラーが返されます。

=FINDB(“X”, “Hello World”)

この場合、対象の文字列に「X」が含まれていないため、#VALUE!エラーが返されます。エラーが発生した場合、検索対象の文字列が正しいか確認しましょう。

開始位置が無効な場合

開始位置が無効なバイト数(範囲外の数値)を指定した場合もエラーが発生します。この場合は、開始位置が正しい範囲に収まるように調整する必要があります。

まとめ

ExcelのFINDB関数は、特定の文字列が他の文字列の中でバイト単位で何バイト目にあるかを検索する強力なツールです。日本語や英数字が混在するデータを扱う際に非常に役立ち、特にバイト数が重要な場面で使用されます。他の関数と組み合わせて、データ処理や文字列の抽出を効率的に行うことができます。FINDB関数を使いこなして、Excelでのデータ操作をさらに効率化しましょう!