Excel関数 逆引き集 | 任意位置から抽出 → MID

Excel
スポンサーリンク

概要

MIDは「文字列の任意位置から、指定した文字数だけ切り出す」関数です。先頭固定のLEFT、末尾固定のRIGHTと違い、開始位置を指定できるのが最大の特徴です。品番の中間コード、区切り記号の間にある部分、固定フォーマットの一部だけ抜き出すなど、柔軟な抽出に向いています。日本語の全角文字でも“1文字=1カウント”で動作します。


基本の使い方

書式

=MID(文字列, 開始位置, 文字数)
  • 開始位置は「左から数えた文字の位置(1始まり)」です。
  • 文字数が足りない場合は、残っているぶんだけ返します。
  • 開始位置が文字列長を超えると空文字を返します。

=MID("AB-12345", 4, 3)     // "123"
=MID("東京都江東区", 3, 2)  // "京都"
=MID("山田 太郎", 3, 1)     // " "(3文字目が半角スペース)
=MID("コード:XYZ", 7, 3)   // "XYZ"

具体例

固定フォーマットから中間コードを抽出

「AA-BB-CC」の形式で、真ん中の「BB」を抜きたい場合:

=MID(A2, 4, 2)

開始位置と文字数が分かっているときに素直に使えます。

区切り文字の“間”を抽出(柔軟な長さ)

「AB-12345-XYZ」から数字部分を抜く(最初の“-”と次の“-”の間):

=MID(A2, FIND("-", A2)+1, FIND("-", A2, FIND("-", A2)+1) - (FIND("-", A2)+1))

開始位置は「最初の“-”の次」、文字数は「次の“-”位置 − 開始位置」で計算します。

先頭ラベルを飛ばして本文を抽出

「ID:123456」から「123456」だけ取りたい:

=MID(A2, LEN("ID:")+1, LEN(A2)-LEN("ID:"))

日付や数値を整形してから中間部分を取得

数値や日付はTEXTで文字列化してからMIDを使うと意図通りになります。

=MID(TEXT(A2, "yyyy/mm/dd"), 6, 2)   // "mm"部分(6文字目から2文字)

応用テンプレート

右端から“手前n文字”を抽出(後方起点のMID)

末尾から一定距離の位置を開始にする(例:末尾の手前3文字から2文字):

=MID(A2, LEN(A2)-3, 2)

最初の区切りの“右側からm文字”抽出

ハイフンの右側からm文字だけ欲しいとき:

=MID(A2, FIND("-", A2)+1, m)

最後の区切りの右側を“固定長”で抽出

最後の「.」の直後から3文字取りたい:

=MID(A2, FIND("@", SUBSTITUTE(A2, ".", "@", LEN(A2)-LEN(SUBSTITUTE(A2, ".", ""))))+1, 3)

空白を整えてから抽出(混在対策)

全角スペースを半角に統一してから位置計算:

=MID(SUBSTITUTE(A2, " ", " "), 開始位置, 文字数)

エラーや足りない長さへの保護

区切りが無い・長さが足りない場合に空欄にする:

=IFERROR(MID(A2, 開始位置, 文字数), "")

よくあるつまずきと対策

開始位置は「1始まり」

開始位置0は無効です。0や負値を計算で出しやすいときはMAXで保護します。

=MID(A2, MAX(1, 開始位置), 文字数)

区切り文字が見つからないとエラー

FIND/SEARCHが見つからないと#VALUE!になります。IFERRORで保護するか、事前に存在チェックを。

=IFERROR(MID(A2, FIND("-", A2)+1, 3), "")

全角・半角の混在

スペースやハイプンが混在すると位置計算が狂います。SUBSTITUTEで統一してから検索しましょう。

数値や日付は文字列にしてから

MIDは文字列向け。数値・日付はTEXTでフォーマットしてから抽出すると期待通りになります。

バイト数ベースが必要なとき(旧来のDBCS設定のみ)

日本語環境の一部設定では MIDB が「バイト数」で動作します(現在は推奨しません)。通常はMIDで文字ベース設計を。


例題

問題1: A2の3文字目から4文字分をB2に表示してください。

解答例:

=MID(A2, 3, 4)

問題2: 「AB-12345-XYZ」形式の文字列C2から、最初のハイフンと次のハイフンの間だけをD2に表示してください。

解答例:

=MID(C2, FIND("-", C2)+1, FIND("-", C2, FIND("-", C2)+1) - (FIND("-", C2)+1))

問題3: 「ID:」に続く6桁の番号をE2から抽出してF2に表示してください。

解答例:

=MID(E2, LEN("ID:")+1, 6)

問題4: 日付G2を「yyyy/mm/dd」に整形し、月(mm)だけをH2に表示してください。

解答例:

=MID(TEXT(G2, "yyyy/mm/dd"), 6, 2)

問題5: 末尾から手前3文字の位置を起点に2文字だけI2に表示してください(文字列はH2)。

解答例:

=MID(H2, LEN(H2)-3, 2)

まとめ

MIDは「任意位置から任意長」を切り出せる柔軟な抽出関数です。開始位置は1始まり、区切り検出はFIND/SEARCH、最後の位置はSUBSTITUTEテクニック、数値・日付はTEXTで文字列化——この基本セットを押さえると、固定長・可変長どちらのパターンでも安定します。全角・半角混在はSUBSTITUTEで揃え、IFERRORで保護しておけば現場の入力揺れにも強いテンプレートが作れます。

タイトルとURLをコピーしました