OfficeType

Excel~MIDB関数で指定バイト数位置から指定バイト数を抽出しよう~エクセル

エクセルで文字列の指定されたバイト位置から指定されたバイト数の文字を返すMIDB関数について説明します。

  • MIDB関数の書式はMIDB(文字列, 開始位置, バイト数)になります。
  • 文字列は指定したバイト数を抽出したい対象の文字列を指定します。
  • 開始位置は何バイト目から抽出するかを指定します。
  • バイト数は開始位置から何バイト抽出したいか指定します。
  • 半角は1文字1バイト、全角は1文字2バイトになります。

下の画像の例でセルB2にセルA2の全角の商品IDから数字部分を抽出したい場合はセルB2に=MIDB(A2,11,10)と入力しEnterを押します。

文字列はセルA2に入力された商品IDを指定するのでA2になります。

開始位置は商品IDの数字部分は11バイト目から始まるので11になります。

バイト数は数字部分は全角5文字で10バイトなので10になります。

つまりセルB2に=MIDB(A2,11,10)と入力しEnterを押すとセルA2の商品IDの数字部分の67890が表示されます。

セルB2からセルB5までオートフィルすればA列の商品IDの数字部分がB列に表示されます。

FINDB関数との組み合わせ

下の画像の例で全角の商品IDから数字部分を抽出したい時にアルファベットのバイト数が決まっていない場合はMIDB関数とFINDB関数を組み合わせれば抽出できます。まずセルB2に=MIDB(A2,FINDB("-",A2)+2,10)と入力しEnterを押すとセルB2にセルA2の商品IDの数字部分67890が表示されます。

文字列はセルA2に入力された商品IDを指定するのでA2になります。

開始位置にはFINDB("-",A2)+2が入力されています。FINDB関数はFINDB("探したい文字",文字列)で探したい文字が文字列の左から何バイト目か返します。探したい文字に代入さているのが-(全角マイナス)で文字列に代入さているのがA2になるのでセルA2に入力された商品IDの中で-(全角マイナス)が左から何バイト目にあるか返します。最後に+2がついているので-(全角マイナス)の右の文字が文字列の左から何バイト目にあるかが求まり、これが開始位置として使われます。

バイト数は数字部分は全角5文字で10バイトなので10になります。

つまりセルB2に=MIDB(A2,FINDB("-",A2)+2,10)と入力しEnterを押すとセルA2の商品IDから数字部分がセルB2に表示されます。

セルB2からセルB5までオートフィルすればA列の商品IDの数字部分がB列に表示されます。

バイト数が末尾を超える場合

MIDB関数は開始位置からのバイト数が開始位置から末尾までのバイト数よりも多い場合は開始位置から末尾まで抽出されるので、開始位置から末尾まで抽出したい時にバイト数が不特定の場合は多めに指定すると抽出できます。