ExcelのSEARCHB関数の使い方|バイト位置を大文字小文字区別なしで検索
ExcelのSEARCHB関数は、文字列の中から特定の文字を検索して「バイト位置」を返す関数です。半角は1バイト、全角は2バイトとしてカウントしますよ。SEARCH関数と似ていますが、戻り値の単位がバイト数になる点が異なります。
SEARCHB関数の最大の特徴は2つです。1つ目は大文字と小文字を区別しないこと。2つ目はワイルドカード(* ?)が使えること。表記ゆれのあるデータや、あいまい検索が必要な場面で活躍してくれますよ。
この記事ではSEARCHB関数の構文と基本的な使い方を解説します。FINDB関数との違いやワイルドカード活用例、実務でのパターンも紹介しますね。Excel初〜中級者向けの内容ですよ。
ExcelのSEARCHB関数とは?
SEARCHB関数は、指定した文字列が検索対象の中で最初に現れる位置を、バイト数で返してくれる関数です。読み方は「サーチ・ビー」で、SEARCH(検索)とByte(バイト)を組み合わせた名前ですよ。
半角は1バイト、全角は2バイトとしてカウントされます。たとえばabc東京という文字列で「京」を検索してみましょう。SEARCH関数は「5文字目」と返し、SEARCHB関数は「6バイト目」と返します。半角3文字(3バイト)+ 全角1文字(2バイト)の次なので、6バイト目になるわけです。
SEARCHB関数の特徴は、大文字と小文字を区別しないこと、そしてワイルドカードが使えることです。「Apple」の中から「a」を検索してもヒットしますし、?-*のようなあいまい指定もできますよ。
SEARCHB関数の構文と引数
SEARCHB関数の構文はシンプルです。
=SEARCHB(検索文字列, 対象, [開始位置])
引数は3つあり、最後の「開始位置」だけ省略できます。
| 引数 | 必須 | 説明 |
|---|---|---|
| 検索文字列 | 必須 | 探したい文字列(ワイルドカード使用可) |
| 対象 | 必須 | 検索される側の文字列(セル参照可) |
| 開始位置 | 省略可 | 何バイト目から検索を始めるか(既定値は1) |
戻り値は、検索文字列が最初に現れる位置をバイト数で返します。1始まり(最初のバイトは1)です。見つからない場合は#VALUE!エラーになりますよ。
なおSEARCHB関数は大文字と小文字を区別しません。「A」と「a」は同じ文字として扱われます。区別したい場合は、後述するFINDB関数を使ってくださいね。
SEARCHB関数の基本的な使い方
実際に3つのパターンでSEARCHB関数を使ってみましょう。
パターン1: 半角のみの文字列
A1セルにapple-orangeが入っているとします。
=SEARCHB("-", A1)
結果は6になります。半角文字はすべて1バイトなので、6文字目=6バイト目という単純な結果ですね。
ここで大文字小文字区別なしの特徴を試してみましょう。
=SEARCHB("APPLE", A1)
結果は1になります。対象は小文字のappleですが、SEARCHB関数は大小を区別しないのでヒットしますよ。
パターン2: 全角のみの文字列
A1セルに東京都新宿区が入っているとします。
=SEARCHB("新", A1)
結果は7になります。全角文字は1文字あたり2バイトなので、「東京都」までで6バイト、「新」が7バイト目から始まる計算ですね。SEARCH関数なら「4」を返します。
パターン3: 半角と全角が混在する文字列
A1セルにABC-赤色が入っているとします。
=SEARCHB("赤", A1)
結果は5になります。半角のABC-が4バイト、続く「赤」が5バイト目から始まるためです。
ここでも大小区別なしの強みが活きます。
=SEARCHB("abc", A1)
結果は1になります。対象は大文字のABCですが、小文字で指定してもヒットしてくれますよ。表記ゆれのあるデータで便利な特徴です。
SEARCHB関数でワイルドカードを使う
SEARCHB関数のもう1つの強みが、ワイルドカードによるあいまい検索です。FINDB関数では使えない機能なので、ぜひ押さえておきたいですね。
| ワイルドカード | 意味 |
|---|---|
? | 任意の1文字 |
* | 任意の文字列(0文字以上) |
~? ~* | リテラルの?や*を検索 |
A1セルにOrder-A1-2025が入っているとして、いくつか試してみましょう。
=SEARCHB("A?-", A1)
結果は7になります。「A」+任意の1文字+「-」というパターンが7バイト目から始まることを示しています。
=SEARCHB("Order-*-2025", A1)
結果は1になります。「Order-」と「-2025」の間に何文字あってもマッチします。型番や注文番号のフォーマット検証に応用できますよ。
リテラルの?を検索したいときは~?と書きます。
=SEARCHB("~?", "本当?偽物?")
結果は5になります。チルダ(~)でエスケープすることで、ワイルドカードではなく文字としての?を検索できますよ。
SEARCH関数・FINDB関数との違い
SEARCHB関数は、SEARCH関数とFINDB関数の両方と比較されます。それぞれの違いを表で整理しておきましょう。
SEARCH関数との違い(文字数 vs バイト数)
| 比較項目 | SEARCH関数 | SEARCHB関数 |
|---|---|---|
| カウント方式 | 文字数(半角・全角ともに1) | バイト数(半角=1, 全角=2) |
| 戻り値 | 文字位置 | バイト位置 |
| 大文字小文字区別 | なし | なし |
| ワイルドカード | 対応 | 対応 |
| 主な用途 | 一般的な文字位置検索 | LEFTB・MIDBと連携した抽出 |
具体例で比較してみます。abc東京という文字列で「京」を検索した場合の結果はこうなります。
| 関数 | 結果 | 理由 |
|---|---|---|
=SEARCH("京", "abc東京") | 5 | abcが3文字、東が4文字目、京が5文字目 |
=SEARCHB("京", "abc東京") | 6 | abcが3バイト、東が4〜5バイト、京が6バイト目から |
LEFTB・MIDB・RIGHTB といったバイト系関数と組み合わせるなら、必ずSEARCHB関数を使ってください。SEARCH関数の結果をバイト系関数に渡すと、全角文字でズレが発生しますよ。SEARCH関数について詳しくは 2026-04-04-excel-function-howto-use-search を参考にしてください。
FINDB関数との違い(大小区別とワイルドカード)
似た関数にFINDB関数があります。こちらもバイト位置を返してくれますが、大小区別とワイルドカードの扱いが真逆です。
| 比較項目 | FINDB関数 | SEARCHB関数 |
|---|---|---|
| 大文字小文字区別 | あり | なし |
| ワイルドカード | 非対応 | 対応(*, ?) |
| 用途 | 厳密一致の検索 | あいまい検索・表記ゆれ対応 |
| エラー条件 | 厳密一致しないと #VALUE! | 大小無視で見つかればヒット |
たとえばAppleという文字列で小文字の「a」を検索する場合を考えてみましょう。FINDB関数は対象に小文字「a」が存在しないため#VALUE!エラーを返します。一方のSEARCHB関数は大文字小文字を区別しないので1を返してくれますよ。
使い分けの目安は次のとおりです。
- 厳密一致でバイト位置を取りたい: FINDB関数を使う
- 大小無視やあいまい検索でバイト位置を取りたい: SEARCHB関数を使う
FINDB関数について詳しくは 2026-05-04-excel-findb-function を参考にしてください。
SEARCHB関数の実務活用例
SEARCHB関数は単体で使うより、バイト系関数と組み合わせるのが基本です。LEFTB・MIDB・RIGHTBとセットで使うことが多いですよ。よく使うパターンを4つ紹介しますね。
例1: 全角文字の前の半角部分を取り出す
A1セルにabc123東京支店が入っているとします。全角文字「東」より前の半角部分を抽出するには、次の数式を使います。
=LEFTB(A1, SEARCHB("東", A1) - 1)
結果はabc123になります。「東」のバイト位置(7)から1を引いた6バイト分を左から取り出す、という考え方ですね。LEFTB関数について詳しくは 2026-05-03-excel-leftb-function を参考にしてください。
例2: 区切り文字でデータを分割する
A1セルに商品-abc-001が入っているとき、最初のハイフンより後ろの部分を取り出します。
=MIDB(A1, SEARCHB("-", A1) + 1, 100)
結果はabc-001になります。ハイフンのバイト位置(5)の次(6)から、十分な長さ(100バイト)を切り出します。MIDB関数について詳しくは 2023-01-03-excel-function-howto-use-midb を参考にしてください。
例3: ワイルドカードで型番を抽出する
A1セルにOrder#A1-2025が入っているとして、「A」+任意1文字+「-」のパターン以降を取り出します。
=MIDB(A1, SEARCHB("A?-", A1), 100)
結果はA1-2025になります。固定の文字列で検索できないあいまいなフォーマットでも、ワイルドカードでマッチさせて切り出せますよ。FINDB関数ではできないSEARCHB関数ならではの活用例です。
例4: エラーを防ぐためのIFERROR組み合わせ
検索文字が見つからないと#VALUE!エラーになります。条件分岐に組み込むときは、IFERROR関数(エラー時に代替値を返す関数)でラップしておくと安心ですよ。
=IFERROR(SEARCHB("対象文字", A1), 0)
検索文字が見つからない場合に0を返すようにしています。後続の数式でエラーを連鎖させない工夫ですね。
よくあるエラーと対処法
SEARCHB関数で発生しやすいエラーを整理しておきます。
| エラー | 原因 | 対処法 |
|---|---|---|
#VALUE! | 検索文字列が対象内に見つからない | IFERRORでラップするか、検索文字列を見直す |
#VALUE! | 開始位置が 0 以下 | 開始位置を1以上に修正 |
#VALUE! | 開始位置が対象のバイト数を超える | LENB関数で対象のバイト数を確認 |
#VALUE! | 開始位置が全角文字の2バイト目を指している | 開始位置を1バイト前後にずらす |
#NAME? | 関数名のスペル間違い | SEARCHBの綴りを確認 |
特に4つ目の「全角文字の2バイト目を指定している」は気づきにくいケースです。たとえば東京に対して=SEARCHB("京", "東京", 2)とした場合を考えてみましょう。開始位置の2バイト目は「東」の2バイト目を指しているため、エラーになります。開始位置は基本的に1か、半角文字の境界に揃えるのが安全ですよ。
対象のバイト数を事前に確認したいときは、LENB関数が便利です。詳しくは 2026-04-04-excel-function-howto-use-lenb を参考にしてください。
DBCS設定による挙動の注意点
SEARCHB関数のバイト換算が動作するのは、Excelの言語設定が特定の言語になっているときだけです。具体的には「日本語」「中国語(簡体字/繁体字)」「韓国語」の場合に限られます。これらはダブルバイト文字セット(DBCS)対応言語と呼ばれますよ。
英語環境などDBCS非対応言語では、SEARCHB関数はSEARCH関数と同じ挙動になります。全文字を1バイトとしてカウントする状態ですね。海外拠点とExcelファイルをやり取りする場合は、念のため言語設定を確認しておくと安心です。
まとめ
ExcelのSEARCHB関数は、半角と全角が混在する文字列を「バイト数」で位置検索できる関数です。大文字小文字を区別せず、ワイルドカードも使える柔軟な検索関数ですよ。3つの関連関数と整理しておきましょう。
- SEARCHB関数: バイト位置を返す。大小区別なし・ワイルドカード対応。あいまい検索向き
- SEARCH関数: 文字位置を返す。大小区別なし・ワイルドカード対応。一般的な文字検索向き
- FINDB関数: バイト位置を返す。大小区別あり・ワイルドカード非対応。厳密一致向き
商品コード・型番・住所など「半角と全角が混在するデータ」を扱う場面で、SEARCHB関数を思い出してみてくださいね。ワイルドカードを使ったあいまい検索や、表記ゆれのあるデータの解析に強みを発揮しますよ。エラーが出やすい場面ではIFERROR関数でラップしておくと、業務でも安心して使えます。
関連する関数の一覧は 2022-02-13-excel-function-alphabetical-order や 2022-02-19-excel-function-list-by-function にまとめてあります。あわせてチェックしてみてくださいね。
