FINDB関数 – 文字列操作

FINDB関数 – バイト単位で文字列内の文字を検索する関数(全角・半角の違いを考慮)


1. 使い方と活用例

FINDB関数は、指定した文字列の中から、検索対象の文字列が最初に現れるバイト位置を返す関数です。
全角文字を2バイト、半角文字を1バイトとして計算するため、文字幅の異なるデータを扱う際に有効です。
日本語や中国語などのマルチバイト文字を含むテキストの処理で特に役立ちます。

2. 基本の書式

=FINDB(find_text, within_text, [start_num])

3. 引数の説明

  • find_text – 検索したい文字列を指定します。
  • within_text – 検索対象となる文字列全体を指定します。
  • start_num(省略可能)– 検索の開始位置(文字単位)を指定します。省略時は1から開始されます。

4. 使用シーン

  • 全角・半角が混在するデータの中から特定の語句のバイト位置を把握したいとき
  • 日本語環境でShift_JISなどのバイト長ベースのデータ処理を行いたいとき
  • 固定バイト長のデータファイルやCSVを整形・解析したいとき

5. 応用のポイント

FINDB関数は、全角文字(例:「あ」「語」など)を2バイトとしてカウントする点がFIND関数との最大の違いです。
バイト単位で正確な位置を知る必要がある場合に重宝されますが、環境の言語設定が日本語などのマルチバイト対応である必要があります。
また、英語環境ではFINDBはFINDと同じ動作になります。

6. 具体例とその解説

=FINDB("語", "日本語")

この式では、「日本語」の中で「語」が始まるバイト位置を返します。
「日」「本」「語」はすべて全角文字(2バイト)なので、「語」は5バイト目にあたります。結果は「5」となります。

=FINDB("b", "abcabc", 4)

この式では、「abcabc」の4文字目から検索を開始し、文字「b」のバイト位置を返します。
半角文字のみなので文字数=バイト数となり、4文字目以降で最初の「b」は5文字目に現れます。結果は「5」です。

7. 関連関数の紹介

  • FIND関数 – バイトではなく「文字単位」で位置を返す関数(FINDBと対比して使用)
  • SEARCH関数 – FINDと同様だが、大文字・小文字を区別しない関数
  • LENB関数 – 文字列のバイト数(全角2、半角1)を返す関数
  • LEFTB関数 – 指定したバイト数で文字列の先頭部分を抽出する関数

8. まとめ

FINDB関数は、全角と半角を区別し、バイト単位で文字列内の検索を行うことができる特殊な関数です。
データのバイト整形やShift_JISベースの処理、文字列の物理的長さを正確に扱う用途で威力を発揮します。
ただし、言語環境や文字コードに依存するため、使う場面と前提条件に注意が必要です。

9. 対応バージョン

FINDB関数は、Excel 2007以降で使用可能です。
ただし、使用するシステムやExcelの言語設定によって動作が異なる場合があるため、日本語版などマルチバイト環境での利用が前提です。