エクセルで、文字列の途中から決まった文字数を取り出すには、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関数の書き方
| 引数 | 入れるもの | ポイント |
|---|---|---|
| 文字列 | 取り出す元の文字列(セル番地) | 数値を指定しても、結果は文字列になります。 |
| 開始位置 | 何文字目から取り出すか | 1 から数えます。0 以下を指定すると #VALUE! エラーになります。 |
| 文字数 | 取り出す文字数 | MID関数では省略できません。残りの文字数より多くてもエラーになりません。 |
MIDB関数は、開始位置と文字数をバイト数で数えます。日本語の環境では、全角の文字は2バイト、半角の文字は1バイトです。
まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
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 |

途中から決まった文字数を取り出す
手順:C3 に MID の式を入れて Enter
商品コード「AB-1023-X」の4文字目から4文字(番号)を取り出します。 C3 に次の式を入力して、Enter キーを押します❶。
=MID(A3,4,4) A344青に元の文字のセル、紫に何文字目から、オレンジに何文字ぶんかを入れます。例:日付の文字列(B 列)の月
=MID(B2,6,2) 
確認:4文字目から4文字の「1023」が出た

答えは 1023 になりました❷。式は、次の順に計算しています。
- 「AB-1023-X」の4文字目を探す
⇒ A・B・-・1 - そこから4文字ぶんを取り出す
⇒ 1023
=MID(A9,5,4) で「090-1234-5678」の 1234 が取り出せます。▶ この式(C3)を、練習ツールで試す / この式(C4)を、練習ツールで試す / この式(C5)を、練習ツールで試す / この式(C9)を、練習ツールで試す
区切りの次から取り出す(MID+FIND)
「山田 太郎」の名だけを取り出すには、FIND関数で空白の位置を探し、その次(+1)から取り出します。
空白は3文字目なので、4文字目から取り出し、結果は 太郎 です。最後の「10」は、名の長さより十分大きい数にしておけば、残りをすべて取り出せます。
かっこの中だけを取り出す
「[A-01]受付」のかっこの中は、開始位置を「[ の次」、文字数を「] の位置 − [ の位置 − 1」にします。
「[」は1文字目、「]」は6文字目なので、2文字目から 6−1−1=4文字を取り出し、結果は A-01 です。特定の文字から特定の文字までを取り出す方法は、特定の文字から特定の文字までを抽出する方法でもくわしく説明しています。
バイト数で取り出す(MIDB)
「Excel関数」は、半角の Excel が5バイトなので、「関」は6バイト目から始まります。=MIDB(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問もあわせてご覧ください。
特定の文字より後ろを取り出すときは、特定の文字より後ろ(以降)を抽出する方法もあわせてご覧ください。
