OfficeType

Excel~FINDBで指定した文字列のバイト数の位置を取得しよう~エクセル

エクセルで検索対象の文字列の中から指定した文字列を検索し、指定した文字列が検索対象の文字列の中で最初に現れる位置が左端から何バイト目かを返すFINDB関数について説明します。

  • FINDB関数の書式はFINDB(検索文字列, 対象, [開始位置])になります。
  • 検索文字列は検索したい文字列を指定します。
  • 対象は検索したい文字列を探したい文字列を指定します。
  • [開始位置]は対象の文字列の何バイト目から検索するかを指定します。省略すると1バイト目から検索します。
  • スペースは文字として扱われます。
  • 半角は1文字1バイト、全角は1文字2バイトになります。

一番左から検索する例

下の画像の例でセルB2にセルA2に入力された文字列から、全角の"c"が最初に現れるバイト数の位置を表示したい場合はセルB2に=FINDB("c",A2)と入力しEnterを押します。

検索文字列は全角の"c"が最初に現れる位置を検索したいので全角の"c"になります。

対象はセルA2の文字列の中から検索したいのでA2になります。

[開始位置]は1バイト目から検索するので省略しています。

つまりセルB2に=FINDB("c",A2)と入力しEnterを押すと文字列の中で全角の"c"が最初に現れるのは左から5バイト目なので5が表示されます。

指定位置から検索する例

下の画像の例でセルB2にセルA2に入力された文字列の7バイト目から検索して、全角の"c"が最初に現れるバイト数の位置を表示したい場合はセルB2に=FINDB("c",A2,7)と入力しEnterを押します。

検索文字列は全角の"c"が最初に現れるバイト数の位置を検索したいので全角の"c"になります。

対象はセルA2の文字列の中から検索したいのでA2になります。

[開始位置]は7バイト目から検索するので7になります。

つまりセルB2に=FINDB("c",A2,7)と入力しEnterを押すと文字列の中の7バイト目から全角の"c"が最初に現れるのは全角の"Office"の"c"なので全角の"Office"の"c"は左から数えて全角スペースを含めて29バイト目なので29が表示されます。

複数文字列検索

検索文字列が複数文字列の場合は文字列の先頭が対象文字列の中で左から最初に現れる位置を返します。

下の画像の例でセルB2にセルA2に入力された文字列から、全角の"Office"が最初に現れる位置を表示したい場合はセルB2に=FINDB("Office",A2)と入力しEnterを押します。

検索文字列は全角の"Office"が最初に現れる位置を検索したいので"Office"になります。

対象はセルA2の文字列の中から検索したいのでA2になります。

[開始位置]は1バイト目から検索するので省略しています。

つまりセルB2に=FINDB("Office",A2)と入力しEnterを押すと文字列の中で全角の"Office"の先頭の"O"が最初に現れるのはスペースを含めて左から21バイト目なので21が表示されます。

大文字と小文字は区別される

FINDB関数は大文字と小文字を区別します。

下の画像の例でセルB2にセルA2に入力された文字列から、全角大文字の"O"が最初に現れる位置を表示したい場合はセルB2に=FINDB("O",A2)と入力しEnterを押します。

検索文字列は全角大文字の"O"が最初に現れる位置を検索したいので"O"になります。

対象はセルA2の文字列の中から検索したいのでA2になります。

[開始位置]は1バイト目から検索するので省略しています。

つまりセルB2に=FINDB("O",A2)と入力しEnterを押すと文字列の中で全角大文字の"O"が最初に現れるのは"Office"の"O"なので"Office"の"O"は左からスペースを含めて21バイト目なので21が表示されます。

オートフィル

下の画像の例でB列にA列の文字列の中で"県"が左から何バイト目の位置か表示したい場合はオートフィルを使えば素早く表示できます。

まずセルB2に=FINDB("県",A2)と入力しEnterを押すとセルA2の文字列のなかで"県"は左から7バイト目なので7が表示されます。

次にセルB2を選択し右下にマウスカーソルを移動するとカーソルが黒十字(矢印なし)になるので、その状態でクリックしたままセルB4までカーソルを動かすとセルB2からB4にA列の文字列の中で"県"が左から何バイト目かが表示されます。

エラー

下の画像の例でセルB2に=FINDB("a",A2)と入力しEnterを押すと、セルA2に全角の"a"は含まれないのでエラー値#VALUE!が表示されます。

対処法

対処法としてIFERROR関数を使います。IFERROR関数の書式はIFERROR(数式, エラーの場合の値)になります。

下の画像の例でセルB2に=IFERROR(FINDB("a",A2),"なし")と入力しEnterを押すと、セルA2に全角の"a"は含まれないのでFINDB関数はエラーとなるので、IFERROR関数のエラーの場合の値の"なし"が表示されます。

SEARCHB関数との違い

FINDB関数は大文字と小文字を区別しますが、SEARCHB関数は区別しません。

FINDB関数はワイルドカードに対応していませんが、SEARCHB関数は対応しています。