SEARCHB関数の使い方|曖昧検索してバイト数で位置を返す

Excel関数

Excel(エクセル)SEARCHB関数の使い方|曖昧検索してバイト数で位置を返す

SEARCHB関数はExcelで特定の文字列をバイト数で検索する関数の一つです。ここではSEARCHB関数の使い方について図解します。

使用関数:SEARCHB

SEARCHB関数とは?

SEARCHB関数は指定した文字列が対象となる文字列の何バイト目にあるかを調べます。

SEARCHBの読み方と意味

SEARCHBは「サーチ・ビ-」と読みます。SEARCHは「探す」「検索する」を意味する英語、Bは「Byte(バイト)」の略でExcelの文字単位の一つ。文字列をバイト単位でカウントする文字列操作の関数名には皆この「B」が末尾に付いています。

バイト数とは?

Excelの文字単位は「文字数」と「バイト数」があり、SEARCHBはバイト数で測って文字列を検索します。
1バイト文字は半角です。全角は2バイトとカウントされます。

日本語の文章はSEARCHBで検索すると実数の2倍になるということですね。
通常、文字列を検索して位置を求めるのにはSEARCH関数を使います。SEARCH関数は全角・半角にかかわらず、1文字を1とカウントした文字数で文字列の位置を返します。

SEARCH関数の使い方や応用例はこちらで詳しく!

https://www.tschoolbank.com/excel/function-search/

SEARCHB関数をワイルドカードで曖昧検索する使い方

SEARCHB関数の引数を確認してみましょう。

「数式」タブ→「関数ライブラリ」→「文字列操作」からSEARCHBをクリックします。
「数式」タブ→「関数ライブラリ」→「文字列操作」→SEARCHB

SEARCHB関数の書式の構成はこうなります。「検索文字列」と「対象」が必須、「開始位置」は任意です。
SEARCHB関数の書式の構成

完全一致の検索文字列を指定して、バイト数で位置を求めるだけなら、通常SEARCHB関数でなく、スペルが短くて入力しやすいFINDB関数が使われます。SEARCHB関数が使われるのはワイルドカード文字で曖昧検索したい場面が主です。ここでは曖昧検索でSEARCHB関数を使う例で、基本的な使い方と引数の確認をしていきましょう。

下図の商品名に「チェアー」が含まれるかどうかをSEARCHB関数で確認します。「チェアー」が含まれていれば数値が返り、含まれていなければエラー#VALUE!が返ります。
SEARCHB関数であいまい検索する商品名の列データ

第一引数「検索文字列」

検索して位置を取得する文字列を指定します。

  • 空白を表す””を指定すると、「開始位置」で指定した値が返ります。「開始位置」省略なら1が返ります
  • 英語の大文字と小文字は区別されません。Aとaは同じ文字と見なされます
  • 全角文字と半角文字は区別されます。全角スペースと半角スペースは異なる文字と見なされます

この例では「チェアー」が含まれているかを曖昧検索で確認するため、第一引数「検索文字列」にワイルドカードのアスタリスクを付けて「“*チェアー”」と入力します。
SEARCHB関数の引数「検索文字列」にワイルドカードで指定

第二引数「対象」

「検索文字列」の位置を検索する元の文字列を指定します。

  • 対象の文字を数えるのに全角は2、半角は1とカウントされます。
  • 「検索文字列」で指定した値が見つからない時は#VALUE!エラーが返ります

この例では商品名の入った最初のセルをクリックで指定します。
SEARCHB関数の引数「対象」を指定

ここまでが必須の引数です。「検索文字列」が一つだけなら、この時点で数式を確定させましょう。他の「商品名」のセルへオートフィルコピーすると、「チェアー」が含まれる商品名のセルに数値が返り、他は#VALUE!エラーになります。
SEARCHB関数の結果

IF関数でSEARCHB関数の結果を分かりやすく整える

エラー値が邪魔だったり、もっと分かりやすい表示にしたい場合はIFERRORとIF関数にネストして実装します。下図はエラーなら空白、チェアーなら「⭕」とIF関数で条件分岐した結果です。
SEARCHB関数の結果をIF関数で条件分岐
数式 =IF(IFERROR(SEARCHB(“*チェアー”,A2),””)=””,“”,“◯”)

「対象」に「検索文字列」が複数含まれ、その2番め以降に登場する「検索文字列」の位置を取得したい場合は次の第三引数「開始位置」の指定へ進みます。

SEARCHB関数の引数「開始位置」は検索文字列が複数含まれる場合に使う

「開始位置」は「対象」のどの位置から検索を開始するかを、先頭を1としてバイト数で指定します。

  • 「対象」に「検索文字列」が複数ある場合に、何バイトの位置から数えるかを指定します
  • 「開始位置」はあくまで「検索を開始する位置」です。「開始位置」より前にある文字列を検索の対象外とするだけで、「開始位置」を指定したとしてもSEARCHB関数が数えるのは「対象」の先頭からになります

例えば、半角スペースで区切られた住所を「対象」として、2番目の半角スペースの位置を取得するとします。
SEARCHB関数の検索文字列に半角スペース、対象に住所を指定

「開始位置」にSEARCHB関数をネストし、1番目の半角スペースの位置を取得して+1を付加します。これにより1番目の半角スペースの位置の次の文字から検索が開始され、2番目の半角スペースの位置が取得できます。
「開始位置」に1番目の半角スペースの位置を取得するSEARCHB関数をネストし、+1を付加

2番目にある検索文字列(半角スペース)が「対象」の先頭から何バイト目の位置にあるかが返りました。
SEARCHB関数で開始位置を指定した結果
数式 =SEARCHB(” “,A2,SEARCHB(” “,A2)+1)

「開始位置」を省略した場合は「対象」の先頭位置「1」を指定したものと見なされます。

SEARCHB関数とFINDB関数の違いについて

SEARCHBとFINDBは共に特定の文字列の位置を求める文字列操作の関数で、引数も全く同じです。

  • FINDB関数は英字の大文字・小文字を区別しますが、SEARCHB関数は区別しません
  • FINDB関数はワイルドカードを使った曖昧検索はできませんが、SEARCHB関数は曖昧検索ができます

FINDB関数の使い方はこちらで詳しく

404 NOT FOUND | TschoolBANK 作~るバンク
パソコンで作る!をナビするサイト
タイトルとURLをコピーしました