Excelで文字列内の特定の文字や部分文字列を検索するには FIND関数 を使います。ただし、FIND関数は全角・半角を区別せず「1文字=1」として文字数で位置を返すのに対して、FINDB関数 は 半角1バイト・全角2バイト を基準にして検索位置を返します。本記事では、FIND関数との違いを踏まえながら、FINDB関数の使い方や注意点を解説します。
FINDB関数とは?
FINDB関数は、指定した文字列内で検索文字列が見つかった位置をバイト数単位で返す関数です。
- 半角文字 → 1バイト
- 全角文字 → 2バイト
を基準に検索位置を計算します。
書式
=FINDB(検索文字列, 対象文字列, [開始位置])
- 検索文字列:検索する文字列を指定します。
- 対象文字列:検索対象となるセルや文字列を指定します。
- 開始位置(省略可):検索を開始する位置(バイト数)を指定します。省略時は先頭から検索します。
使用例
=FINDB("タ","東京タワー") → 5
東京タワー のバイト割り当ては次の通りです:
- 東 = 1–2バイト
- 京 = 3–4バイト
- タ = 5–6バイト
- ワ = 7–8バイト
- ー = 9–10バイト
「タ」は5–6バイトに位置するため、5バイト目から始まります。
したがって、=FINDB("タ","東京タワー")
の結果は 5 になります。
活用例
- 全角・半角混在データでの検索位置確認
システムやデータベースへの取り込み時に、バイト単位で検索位置を把握できます。 - 部分抽出との組み合わせ
FINDBで見つけた位置を使って MIDB関数 で部分文字列を切り出すことが可能です。
注意点
- 言語設定依存
半角=1バイト、全角=2バイトの動作は日本語や中国語などの言語設定環境のみ有効で、英語版ExcelではFIND関数と同じ動作になります。 - FINDB関数で検索文字列が見つからない場合は、Excelはエラー値
#VALUE!
を返します。
関連関数
- FIND関数:文字数単位で検索位置を返す
- SEARCH関数:大文字・小文字を区別せず検索位置を返す
- MIDB関数:バイト数単位で部分文字列を抽出
- LEFTB / RIGHTB関数:バイト数単位で文字列を切り出す
まとめ
FINDB関数は、文字列内で検索文字列が見つかった位置をバイト数単位で返す関数です。
- 書式:
=FINDB(検索文字列, 対象文字列, [開始位置])
- 半角=1バイト・全角=2バイトで検索位置を返す
- MIDB関数などと組み合わせて部分文字列を切り出す処理に便利