Excelの関数の中でよく使われる一つ、
SEARCH関数(サーチなので探す、見つけるという意味になります。)
SEARCHB関数は検索文字列を対象の文字列の中で検索して位置を返します。
大文字小文字は区別されません。SEARCH関数とSEARCHB関数を解説していきます。

SEARCH関数

SEARCH関数は、文字列の中で検索文字列が左端から何文字目かを表示してくれます。
SEARCH関数(サーチなので探す、見つけるという意味になります。)
書式は、「=SEARCH (検索文字列, 対象, [開始位置])」となります。
機能としては、文字列対象の中で選択した検索文字列が左端から何文字目にあるのかを表示してくれます。

例1:下記の表の作成をし準備をします。
「E2」にSEARCH関数を使って県まで左から何文字かを返してくれます。

「E2」に=SEARCH(A2,B2,C2)と入力します。オートフィルをし完成させましょう。
エラーになっている京都府は県ではないので探せてないのが解りますね!

SEARCH関数では文字列を検索する際に「任意の文字」を指定するためにアスタリスクやワイルドカードを使う事が出来ます。
特別な検索を行いたい時には、SEARCH関数を利用してください。

例2:SEARCH関数は半角大文字と半角小文字を区別しないので下のデータを見てみましょう。

・2行目の例 =SEARCH(“123”,A2) は123-Excelの中で123を探してくれて、結果は1になります。
・3行目の例 =SEARCH(“-“,A3) は 123-Excelの中で-を探し4文字目になります。
・4行目の例 =SEARCH(“Excel”,A4) は 123-Excelの中でExcelを探5文字目になります。
・5行目の例 =SEARCH(“cel”,A5) は 123-Excelの中でcセルを探してくれて7文字目になります。
・6行目の例 =SEARCH(“e”,A6) は 123-Excel の中eを探してくれて5文字目になります、
ここでは Excelの文字列の大文字のと小文字のが区別されていませんね。
・7行目の例 =SEARCH(“cell”,A7) は 123-Excel の中でセルを探して存在しないのでエラーになります。
・7行目の例 =SEARCH(“都”,A7) は東京都新宿区の中で都を探し3文字目になります。
<開始位置> は<対象>に<検索文字列>が複数存在して、後の位置を求めたい場合に指定します。
SEARCH 関数は全角を1文字として考えますが、SEARCHB関数は全角を2文字として考えるんです。

SEARCHB関数

ExcelのSEARCHB関数は、指定した検索文字列を他の文字列の中で検索して、
その検索文字列が最初の位置を左端から数えた位置をバイト数で返します。
大文字と小文字は区別されないです。全角の文字を2と考えます。
書式は、=SEARCHB(検索文字列, 対象, 開始位置)になります。

検索文字列(必須):検索する文字列を指定します。
対象(必須) :検索文字列を含む文字列を指定します。
開始位置(省略可):検索を開始する位置を指定します。省略すると1として処理されます。
※重要 :開始位置を指定した場合でも、対象の先頭文字から返されます。

例1:「A2」の対象文字列の中から「ル」の文字のバイト数を返します。
「C2」に=SEARCHB(“ル”,A2)と入力します。
結果は「7」が返り、文字列の最初から考えて7バイト目である事が解ります。
SEARCH関数の場合は「4」が返されます。

文字とバイト数について
文字とバイト数の関係については、日本語表記とアルファベット表記で異なるので、理解しましょう。
多くのケースでは下記のように決まっています。

例1:先程のSEARCH関数の住所から県までの文字数を返す表を参考に見ていきます。
「E2」のセルに=SEARCHB(A2,B2,C2)と入力します。結果は下のExcelの表になります。

県の次から始まるのは「5」バイトからだと分かりました。
京都府は県ではないのでエラーが返りましたね!

SEARCH関数・SEARCHB関数のまとめ

SEARCH関数指定した文字列が対象文字列の何桁目にあるかを返すのがSEARCH関数です。
文字列が最初に現れる位置の文字番号を返します。大文字、小文字は区別されないんでしたよね。
ワイルドカードの指定も出来るんです。他の関数と区別して考えましょう!
検索文字列が存在しない場合はエラーとなりますので他の関数と組み合わせてエラーの回避も出来ます。
利用のときはIFERROR関数との組み合わせばエラーを回避することが出来ます。
SEARCHB関数は対象の文字列の最初の位置から検索する文字列の場所を調べてくれ、その検索文字列にある最初の文字のバイト数を返してくれます。
該当する検索文字列が存在しないとエラーを返します。
SEARCHB関数も大文字と小文字は区別せず、検索します。検索文字列にワイルドカードが利用できます。
SEARCHB関数は最初の文字んのバイト数が返ってきます。文字数で取得したい時はSEARCH関数を利用してください。
通常はプログラム的なお仕事でない限りSEARCH関数で問題ありません。
是非、利用してみて下さい。
これからもソフトキャンパスのブログで色々な関数の使い方をお知らせして参ります。
是非ご覧になってくださいね!応援お願いいたします。