更新日:、 作成日:

エクセル MID 関数:文字列の途中から抽出する

はじめに

エクセルの MID 関数の使い方を紹介します。

MID 関数は文字列の途中 (何文字目) から指定した文字数を抽出します。

=MID("ABCDE",2,3) のようにして、BCD を取得できます。

=MID("ABCDE",2,LEN("ABCDE")) のようにして、2 文字目から最後までの BCDE を取得できます。

=MID("ABCDE",LEN("ABCDE")-開始位置+1,1) のようにして、開始位置を後ろからの位置として指定できます。

特定の文字で囲まれた範囲を抽出できます。

文字列の先頭や最後から抽出するには「LEFT 関数」または「RIGHT 関数」を使用します。
文字列の抽出する方法は「文字列を抽出する」をご覧ください。
文字列を検索する方法は「文字列やセルを検索する」をご覧ください。

MID 関数の引数

MID(文字列, 開始位置, 文字数)
文字列開始位置から文字数分を取得します。

引数「文字列」抽出元の文字列を指定します。スピル化
引数「開始位置」何文字目から抽出するかを指定します。スピル化
引数「文字数」抽出する文字数を指定します。スピル化

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

使い方

MID 関数の使い方を紹介します。

2 文字目から 3 文字を抽出する

セル「B3」の 2 文字目から 3 文字を抽出します。

=MID(B3,2,3)
9

開始位置と文字数を指定して抽出する

12345 の開始位置から指定した文字数を抽出します。

=MID(B3,C3,D3)
10

最後の文字まで抽出する

12345 の開始位置から最後まで抽出します。「LEN 関数」を使用して文字数を取得できます。

=MID(B3,C3,LEN(B3))
11

高度な使い方

MID 関数と他の関数を組み合わせた使い方などを紹介します。

後ろから抽出する

引数「開始位置」に 文字数 - 開始位置 + 1 のように入力して、開始位置を後ろから指定できます。「LEN 関数」を使用して文字数を取得できます。

=MID(B3,LEN(B3)-C3+1,1)
12

後ろから何文字目まで抽出する

引数「文字数」に 文字数 - 終了位置 - 開始位置 + 2 のように入力して、後ろから何文字目の終了位置を指定できます。「LEN 関数」を使用して文字数を取得できます。

=MID(B3,C3,LEN(B3)-D3-C3+2)
18

特定の文字の範囲を抽出する

12[45]78 から [] で囲まれた 45 を抽出します。

FIND 関数」を使用して、特定の文字の位置を取得できます。引数「開始位置」に 開始検索位置 + 1 を入力し、引数「文字数」に 終了検索位置 - 開始検索位置 - 1 を入力して、特定の文字で囲まれた範囲を抽出できます。

=MID(B3,FIND("[",B3)+1,FIND("]",B3)-FIND("[",B3)-1)
13

12_45_78 のように同じ文字で囲まれているときは、引数「文字数」に 2 番目の検索位置 - 開始検索位置 - 1 を入力して抽出できます。

=MID(B3,FIND("_",B3)+1,FIND("_",B3,FIND("_",B3)+1)-FIND("_",B3)-1)

LET 関数」を使用できるバージョンなら次のように入力できます。

=LET(開始,FIND("_",B3),
終了,FIND("_",B3,開始+1),
MID(B3,開始+1,終了-開始-1))
14

1 文字ずつ分割する

文字列を 1 文字ずつに分割するには「スピル」を使用します。

引数「開始位置」に「SEQUENCE 関数」を使用して、文字列を 1 文字ずつ抽出します。「LEN 関数」を使用して文字数を取得できます。

=MID(B3,SEQUENCE(LEN(B3)),1)
16

逆順に抽出するには「SEQUENCE 関数」の引数「開始値」に 文字数 を入力し、引数「増分量」に -1 を入力します。

=MID(B3,SEQUENCE(LEN(B3),,LEN(B3),-1),1)
17
スピルは 365 または 2021 から使用できます。

解説

引数「開始位置」が引数「文字列」の文字数を超えるときは、空文字 "" を返します。

引数「開始位置」が 2 で引数「文字数」が 1 なら、引数「文字列」の 2 文字目から 1 文字を抽出します。ABCB

引数「開始位置」に 0 以下や数値以外のときはエラー #VALUE! になります。

引数「文字数」が 0 なら、空文字 "" を返します。

引数「文字数」が引数「文字列」の文字数を超えるときは、最後の文字まで抽出します。

引数「文字数」がマイナスの値や数値以外のときはエラー #VALUE! になります。

セルの書式設定から表示形式を指定しているときは、それを適用する前の値を抽出します。表示形式を適用した状態から抽出するには「TEXT 関数」を使用します。

数字や日付から抽出する

数字や日付から抽出するときは、セルの書式設定の表示形式が適用される前の値から抽出します。

カンマ区切りの数字 1,000 の実際の値は 1000 です。

日付 2000/1/1 の実際の値は 36526 です。

カンマ区切りや日付から抽出するには「TEXT 関数」を使用して、文字列に変換してから抽出します。

=MID(TEXT(B3,"#,##0"),1,5)
=MID(TEXT(B5,"yyyy/m/d"),1,8)
19

セルに設定されている表示形式を取得するには、セルの書式設定のユーザー定義をコピーします。日本語が含まれているときは "" で囲まれているのでそれを削除します。

user-format

表示形式について詳しくは次をご覧ください。