MID関数・MIDB関数の使い方|途中から文字を取り出す・バイト数で取り出す・かっこの中

MID関数・MIDB関数の使い方|途中から文字を取り出す・かっこの中を取り出す

エクセルで、文字列の途中から決まった文字数を取り出すには、MID関数を使います。たとえば、商品コード「AB-1023-X」の4文字目から4文字は、=MID(A3,4,4) で「1023」と取り出せます。

MIDB関数は、開始位置と文字数をバイト数で数えます。全角の文字は2バイト、半角の文字は1バイトです。「Excel関数」の「関」は6バイト目から始まるので、=MIDB(A8,6,2) で取り出せます。

文字列の一部を取り出す方法をまとめて比べたいときは、文字列を抽出する方法まとめ(早見表)が便利です。

空白の次から、かっこの中だけ、のように位置が決まっていない部分は、FIND関数で位置を探して組み合わせます。この記事では、MID関数の基本、区切りを使った取り出し方、バイト数で数えるMIDB関数、うまくいかないときの直し方を、1つの表で説明します。下の練習ツールで、元の文字列を書き換えて結果の変わり方を試せます。

目次

MID関数・MIDB関数の書き方

MID関数の構文
数式=MID(文字列,開始位置,文字数)
ひとことで途中から文字を取り出す
文字列
文字列です
開始位置
開始位置です
文字数
取り出す文字数です
引数入れるものポイント
文字列取り出す元の文字列(セル番地)数値を指定しても、結果は文字列になります。
開始位置何文字目から取り出すか1 から数えます。0 以下を指定すると #VALUE! エラーになります。
文字数取り出す文字数MID関数では省略できません。残りの文字数より多くてもエラーになりません。

MIDB関数は、開始位置と文字数をバイト数で数えます。日本語の環境では、全角の文字は2バイト、半角の文字は1バイトです。

MIDB関数の構文
数式=MIDB(文字列,開始位置,バイト数)
ひとことで指定した位置から、バイト数で取り出す
文字列
元の文字列です
開始位置
開始位置(バイト)です
バイト数
取り出すバイト数です

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

MID関数の使い方|やりたいこと別の式

やりたいこと式(例)結果
コードの途中の番号=MID(A3,4,4)1023
住所の途中の区=MID(A4,4,4)千代田区
日付の文字列から月=MID(A5,6,2)10
空白の次から(名)=MID(A6,FIND(“ ”,A6)+1,10)太郎
かっこの中だけ=MID(A7,FIND(“[“,A7)+1,FIND(“]”,A7)-FIND(“[“,A7)-1)A-01
電話番号の真ん中4桁=MID(A9,5,4)1234
エクセルのMID関数で文字列の途中を取り出した表
エクセルのMID関数で文字列の途中を取り出した表

途中から決まった文字数を取り出す

手順:C3 に MID の式を入れて Enter

商品コード「AB-1023-X」の4文字目から4文字(番号)を取り出します。 C3 に次の式を入力して、Enter キーを押します❶。

C3 に入れる式
=MID(A3,4,4)
A3 文字列(商品コード)4 開始位置(4文字目)4 文字数(4文字)
ひとことで商品コードの4文字目から4文字を取り出す
式を分けて読むと(色は画像の枠と同じ)
文字列A3
どの文字から?
→ 商品コードのセル
開始位置4
何文字目から?
→ 4文字目から
文字数4
何文字?
→ 4文字
自分の表で使うときは
青に元の文字のセル、紫に何文字目から、オレンジに何文字ぶんかを入れます。例:日付の文字列(B 列)の月=MID(B2,6,2)
エクセルのMID関数で4文字目から4文字を取り出す式と、元の文字列のセルを色分けした画面
エクセルのMID関数で4文字目から4文字を取り出す式と、元の文字列のセルを色分けした画面

確認:4文字目から4文字の「1023」が出た

エクセルのMID関数でAB-1023-Xの4文字目から4文字1023が取り出せたことを示した画面
エクセルのMID関数でAB-1023-Xの4文字目から4文字1023が取り出せたことを示した画面

答えは 1023 になりました❷。式は、次の順に計算しています。

  1. 「AB-1023-X」の4文字目を探す
    ⇒ A・B・-・1
  2. そこから4文字ぶんを取り出す
    ⇒ 1023
ヒント:電話番号の真ん中も同じ形
=MID(A9,5,4) で「090-1234-5678」の 1234 が取り出せます。

区切りの次から取り出す(MID+FIND)

「山田 太郎」の名だけを取り出すには、FIND関数で空白の位置を探し、その次(+1)から取り出します。

MID関数の構文
数式=MID(A6,FIND(" ",A6)+1,10)
ひとことで途中から文字を取り出す
A6
文字列です
FIND(" ",A6)+1
開始位置です
10
取り出す文字数です

空白は3文字目なので、4文字目から取り出し、結果は 太郎 です。最後の「10」は、名の長さより十分大きい数にしておけば、残りをすべて取り出せます。

かっこの中だけを取り出す

「[A-01]受付」のかっこの中は、開始位置を「[ の次」、文字数を「] の位置 − [ の位置 − 1」にします。

MID関数の式
数式=MID(A7,FIND("[",A7)+1,FIND("]",A7)-FIND("[",A7)-1)
ひとことで途中から文字を取り出す
A7
文字列です
FIND("[",A7)+1
開始位置です
FIND("]",A7)-FIND("[",A7)-1
取り出す文字数です

「[」は1文字目、「]」は6文字目なので、2文字目から 6−1−1=4文字を取り出し、結果は A-01 です。特定の文字から特定の文字までを取り出す方法は、特定の文字から特定の文字までを抽出する方法でもくわしく説明しています。

バイト数で取り出す(MIDB)

「Excel関数」は、半角の Excel が5バイトなので、「関」は6バイト目から始まります。=MIDB(A8,6,2) で、結果は 関 です。

MIDB関数の式
数式=MIDB(A8,6,2)
ひとことで指定した位置から、バイト数で取り出す
A8
元の文字列です
6
開始位置(バイト)です
2
取り出すバイト数です
ポイントポイント:開始位置やバイト数が全角文字の途中にかかると、その文字の代わりに空白が入ります。=MIDB(A8,5,2) は「l 」(l+空白)になりました。

開始位置が文字数より後ろのとき

開始位置が元の文字数より大きいと、エラーではなく空の文字(””)が返ります。=MID(A10,5,2) は、2文字しかない「ab」の5文字目からなので、何も表示されません。開始位置に 0 を指定したときは #VALUE! エラーになります。

MID関数がうまくいかないときの確認表

症状考えられる原因対処
何も表示されない開始位置が文字数より後ろ開始位置を確かめる。LEN関数で文字数を数える。
「#VALUE!」になる開始位置が 0 以下/FIND関数で区切りが見つからない開始位置を 1 以上にする。区切り文字(全角・半角)をそろえる。
1文字ずれるFIND関数の結果に「+1」「-1」を付け忘れた区切りの「次」から取り出すなら +1 を付ける。
取り出した数字で計算できない結果が文字列になっているVALUE関数で数値に戻す(VALUE関数)。
日付から月が取れないセルが本物の日付(シリアル値)MONTH関数を使う。

MID関数のよくある質問

左から・右から取り出すには?

左からは LEFT関数(LEFT関数の使い方)、右からは RIGHT関数(RIGHT関数の使い方)を使います。

文字数を「最後まで」にしたいときは?

MID関数の文字数は省略できないので、十分大きな数(100 など)を指定するか、LEN(セル) を指定します。

MID関数とMIDB関数の違いは?

MID関数は文字数で、MIDB関数はバイト数で数えます。日本語の環境では、全角の文字は2バイト、半角の文字は1バイトです。「Excel関数」から「関」を取り出すなら =MIDB(A8,6,2) です。

MIDB関数の結果に空白が入るのはなぜ?

開始位置やバイト数が全角文字の途中にかかると、その文字の代わりに空白が入ります。=MIDB(A8,5,2) は「l 」(l+空白)になりました。全角文字の始まるバイトに合わせます。

あわせて読みたい:文字列を取り出す関連記事

練習用ファイル:練習用Excelファイル(.xlsx・無料)

文字列関数を問題で練習したいときは、文字列関数の練習問題10問もあわせてご覧ください。

特定の文字より後ろを取り出すときは、特定の文字より後ろ(以降)を抽出する方法もあわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次