概要
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で保護しておけば現場の入力揺れにも強いテンプレートが作れます。
