Excel 指定の文字が何バイト目にあるかを調べる (FINDB関数)

2020年5月19日

FINDB関数は指定の文字列が何バイト目に存在するかを調べるための関数です。

実用ではFIND関数の方が利用頻度が高いと思われます。

このFIND関数と基本的な挙動は同じですが

2バイト文字(主に全角文字)の取り扱いが異なり、

それをFIND関数では1としてカウントし、

FINDB関数では2としてカウントします。

仕様

=FINDB(検索文字列,対象,開始位置)
引数省略時の値説明
検索文字列省略不可検索する文字列かセルを指定。
対象省略不可検索対象となる文字列を指定。
開始位置1検索を開始する位置を
先頭を1とする数値で指定。
各引数の詳細

使用例

基本的な例(FIND関数との比較)

このような結果になります。

FINDB関数では全角文字を2とカウントするためFIND関数と結果に差が出ます。

FIND関数とFINDB関数の結果の差

スピルを利用する方法とメリット

Office365やExcel2019以降ではスピルという形式で記述可能です。

これは複数セルに数式をコピーする場合に便利な機能です。

スピルの利用には何れかの引数を複数セルの範囲で指定します。

例では検索文字列のみ範囲にしていますが、対象を範囲にすることも可能です。

スピルでFINDB関数を記述する例(C5セル)
スピルでFINDB関数を記述する例(C5セル)

数式を入力するのは最初の一つのセルですが、

引数で指定した高さ分、数式がセルのコピーなしで自動拡大されます。

C5に指定したFIND関数がC11まで自動拡大
C5に指定したFIND関数がC11まで自動拡大

スピルを利用することで今回の例では、

C5セルに入力するだけでよいため(C6以降にコピーペーストが不要)

以下のメリットがあります。

  • 入力の手間が少ない(数式のセルが多いほど効果が大きい)
  • 数式を編集した時、コピー忘れのリスクがない(最初のセルを更新すると全セルに反映)
  • 絶対参照が不要
  • 途中に行を追加した場合、数式のコピー&ペーストが不要。行削除でも壊れにくい。

関連記事

応用例

FIND・FINDB関数で右(後ろ)からN文字目の検索する方法

FIND・FINDB関数に複数の検索文字列を指定する方法

関数の仕様と使い方の記事一覧