【Excel】指定した検索文字列が最初に出てくる位置(バイト数)を取得する方法(SEARCHB関数)

ExcelのSEARCHB関数の使い方について具体例を交えて説明します。

書式

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

※ []内の引数は任意の項目です。

関数と変数の説明

対象の文字列の開始位置から検索文字列の場所を調べ、その検索文字列のある最初のバイト数を返します。該当する検索文字列が存在しないと「#VALUE!」を返します。

  • 検索文字列(必須項目):検索したい文字列です。
  • 対象(必須項目):検索文字列を含む検索する対象となる文字列です。
  • 開始位置(任意項目):検索を開始する位置を指定します。0以下を指定すると「#VALUE!」を返します。
  • 大文字と小文字は区別せず、検索します。
  • 検索文字列にワイルドカードが利用できます。

似た動作をするFIND関数は大文字と小文字を区別し、ワイルドカードは使えません。

SEARCHB関数は「バイト数」が返ってきます。文字数で取得したい場合はSEARCH関数を利用します。通常はプログラマブルなお仕事でない限りSEARCH関数で問題ありません。

使用例

 

ABC
1対象文字列
2マイクロソフト(microsoft)はソフトウェア会社です。
3
4取得したい内容出力結果計算式
51.「ソフト」の位置を知りたいとき([開始位置]変数省略のとき)9=SEARCHB(“ソフト”,A2)
62.「ソフト」の位置を知りたいとき([開始位置]変数1のとき)9=SEARCHB(“ソフト”,A2,1)
73.10バイト目以降に出現する「ソフト」の位置を知りたいとき28=SEARCHB(“ソフト”,A2,10)
84.該当する文字が存在しないとき#VALUE!=SEARCHB(“アップル”,A2,6)
95.[開始位置]変数が0以下のとき#VALUE!=SEARCHB(“ソフト”,A3,0)

「1.「ソフト」の位置を知りたいとき([開始位置]変数省略のとき)」のケースは開始位置変数を省略したときの出力結果です。開始位置が省略されあときは1で計算されるため、「2.「ソフト」の位置を知りたいとき([開始位置]変数1のとき)」と同じ結果になります。「ソフト」の前の「マイクロ」で全角文字なので1文字2バイトとなり4文字×2バイト=8バイトです。その次のバイトから「ソフト」となるため、8バイト+1バイト=9バイトとなり、9が返ってきます。

「3.10バイト目以降に出現する「ソフト」の位置を知りたいとき」のケースは開始位置が10バイト目からとなっているので、10バイト÷2バイト=5文字となり、最初の5文字は無視して、6文字目からとなる「フト(microsoft)はソフトウェア会社です。」から「ソフト」の位置の調べます。
そうすると「ソフトウェア会社です」の「ソフト」が該当します。最初の「マイクロソフト」は7文字×2バイト(全角文字のため)=14バイト、「(microsoft)」は11文字×1バイト(半角文字のため)=11バイト、「は」は1文字×2バイト(全角文字のため)=2バイトです。合計すると14バイト+11バイト+2バイト=27バイトとなります。その次のバイトから「ソフト」となるため、27バイト+1バイト=28バイトとなり、28が返ってきます。

「4.該当する文字が存在しないとき」のケースは対象文字列に「アップル」は存在しません。そのときは「#VALUE!」が返ってきます。

「5.[開始位置]変数が0以下のとき」のケースは開始位置が0と誤った値です。その場合は「#VALUE!」が返ってきます。

SEARCH関数と他の関数の組み合わせで便利に使う方法

類似関数

  • SEARCH関数(バイト数を返すのではなく、文字数を返す関数です。)

コメント

タイトルとURLをコピーしました