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

SEARCH関数

SEARCH関数は、文字列の中で検索文字列が左端から何文字目かを表示してくれます。
SEARCH関数(読み:サーチ、意味:英語で「search」は「探す、見つける」)になります。
書式は、「=SEARCH (検索文字列, 対象, [開始位置])」という形で使うのが一般的で、
FIND関数やFINDB関数などと同じ形になります。
機能としては、文字列(「対象」)の中で指定した「検索文字列」が左端から何文字目にあるのかを表示してくれる関数になります。

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

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

SEARCH関数では文字列を検索する際に「任意の文字」を指定するためにアスタリスク*や疑問符?(ワイルドカード)を使えます。
特殊な検索を行いたい場合には、SEARCH関数を利用しましょう。FIND関数はワイルドカードには対応していないんです!

例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の中でcelを探し7文字目になります。
・6行目の例 =SEARCH(“e”,A6) は 123-Excel の中 eを探し5文字目になります、
ここでは 大文字の E と 小文字のeが区別されていませんね。
・7行目の例 =SEARCH(“cell”,A7) は 123-Excel の中でcellを探し存在しないので#VALUE! になります。
・7行目の例 =SEARCH(“都”,A7) は東京都新宿区の中で都を探し3文字目になります。
<開始位置> は<対象>に<検索文字列>が複数存在して、後の位置を求めたい場合に指定します。
SEARCH 関数は全角文字を1文字として扱いますが、SEARCHB関数は全角文字を2文字として扱います。

SEARCHB関数

ExcelのSEARCHB関数は、指定した検索文字列を他の文字列の中で検索して、
その検索文字列が最初の位置を左端から数えた位置をバイト数で返します。
大文字と小文字は区別されません。2バイト文字(日本語)を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関数です。
文字列が最初に現れる位置の文字番号を返します。大文字、小文字は区別されないんでしたよね。
ワイルドカードの指定も出来るんです。他の関数と区別して考えましょう!
検索文字列が存在しない場合は「#VALUE」となりますので他の関数と組み合わせてエラーの回避も出来ます。
利用のときはIFERROR関数との組み合わせばエラーを回避することが出来ます。
SEARCHB関数は対象の文字列の開始位置から検索文字列の場所を調べ、その検索文字列のある最初のバイト数を返します。
該当する検索文字列が存在しないと「#VALUE!」を返します。
SEARCHB関数も大文字と小文字は区別せず、検索します。検索文字列にワイルドカードが利用できます。
SEARCHB関数は「バイト数」が返ってきます。文字数で取得したい場合はSEARCH関数を利用します。
通常はプログラム的なお仕事でない限りSEARCH関数で問題ありません。
是非、利用してみて下さい。
これからもソフトキャンパスのブログ、Youtubeで色々な関数の使い方をご紹介しいて参ります。
是非参考にしてください!応援よろしくお願いいたします。