Excel

ExcelのSEARCHB関数でバイト単位で文字列を検索しよう!【大文字・小文字を区別せずに使える便利な関数】

ExcelのSEARCHB関数は、指定した文字列や文字が、他の文字列内でどこにあるかをバイト単位で検索し、その位置を数値で返す関数です。特に、日本語などの2バイト文字を含むデータを扱う際に便利です。SEARCHB関数は、英数字や日本語が混在する文字列の中から特定の文字を探すのに役立ちます。この記事では、SEARCHB関数の基本的な使い方から応用的な活用法までを詳しく解説します。

SEARCHB関数とは?

SEARCHB関数は、指定した文字列が、他の文字列の中で何バイト目にあるかを検索し、その位置を返す関数です。SEARCH関数が文字単位で検索を行うのに対して、SEARCHB関数はバイト単位で位置を計算します。1バイト文字(英数字など)は1バイトとして扱われ、2バイト文字(日本語など)は2バイトとして扱われるため、特に日本語や中国語などの2バイト文字を含むデータを扱う際に有効です。

SEARCHB関数の基本的な構文

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

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

SEARCHB関数の動作イメージ

たとえば、セルA1に「Excel関数」という文字列が入力されている場合、SEARCHB関数を使って「関」がバイト単位で何バイト目にあるかを調べるには次のように入力します。

=SEARCHB(“関”, A1)

この場合、結果は6となります。英字は1バイトずつ計算されますが、日本語の「関」は2バイトとして計算されるため、「関」は6バイト目に位置しています。

SEARCHB関数の実際の例

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

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

このように、SEARCHB関数は1バイト文字(英数字など)と2バイト文字(日本語など)を区別し、バイト数に基づいて位置を返します。

開始位置を指定する例

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

=SEARCHB(“日”, A1, 6)

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

SEARCHB関数の応用例

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

SEARCHB関数を使って、英語と日本語が混在するデータの中から、特定の単語や文字をバイト単位で検索することが可能です。たとえば、セルA2に「Excelで学ぶ日本語」という文字列があり、「日」が何バイト目にあるかを調べるには、次のように使います。

=SEARCHB(“日”, A2)

結果は9バイト目となり、「日」がバイト単位で9バイト目に位置していることが確認できます。

LEFTB関数と組み合わせた文字列の部分抽出

LEFTB関数と組み合わせることで、文字列の一部をバイト単位で抽出することができます。たとえば、セルA2に「Excel関数」が入力されていて、「Excel」だけを取り出したい場合、次のようにSEARCHB関数とLEFTB関数を組み合わせて使用します。

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

この数式では、「関」が何バイト目にあるかをSEARCHB関数で特定し、そのバイト数の前までの文字列「Excel」をLEFTB関数で抽出します。

特定の文字列の存在確認

SEARCHB関数は、指定した文字列が見つからない場合に**#VALUE!エラー**を返すため、これを利用して特定の文字列が存在するかどうかを確認することができます。

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

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

SEARCHB関数の便利な豆知識

バイト単位での検索に特化

SEARCHB関数は、バイト単位での検索に特化しており、特に日本語や中国語などの2バイト文字を扱う際に便利です。1バイト文字(英数字など)は1バイト、2バイト文字(日本語など)は2バイトとして計算されます。これにより、2バイト文字が混在するデータでも正確な位置を特定できます。

大文字・小文字を区別しない

SEARCHB関数は、大文字と小文字を区別せずに検索を行うため、特定の単語や文字列を探す際に非常に便利です。たとえば、「apple」と「Apple」は同じ文字列として扱われます。

=SEARCHB(“apple”, “Apple is tasty”)

結果は1となり、バイト単位で「Apple」が「apple」として認識されます。

数値の検索にも使用可能

SEARCHB関数は、文字列だけでなく数値を含むデータにも使用できます。たとえば、セルA1に「12345」が入力されている場合、「3」が何バイト目にあるかを次のように検索できます。

=SEARCHB(“3”, A1)

結果は3となり、「3」が3バイト目にあることがわかります。

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

#VALUE!エラー

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

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

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

開始位置の指定が無効な場合

指定した開始位置が無効な場合、たとえばバイト数が文字列の長さを超えている場合にもエラーが発生します。正しいバイト範囲内で開始位置を指定しましょう。

まとめ

ExcelのSEARCHB関数は、文字列内の特定の文字や単語がバイト単位でどこにあるかを検索する便利なツールです。日本語や英数字が混在するデータにおいて、バイト数に基づく正確な位置を把握したい場合に特に役立ちます。他の関数と組み合わせることで、データの抽出や操作も効率的に行えるので、データ処理の幅が広がります。SEARCHB関数を活用して、Excelでの作業をさらに効率化しましょう。