MID関数の使い方|文字列の途中から取り出す

執筆者:

カテゴリ:

MIDは、文字列の指定した位置から、指定した文字数だけ取り出す関数です。

LEFT が先頭、RIGHT が末尾なのに対し、MIDは途中の任意の位置を切り出せます。ExcelとGoogleスプレッドシートで共通です。

書式

=MID(文字列, 開始位置, 文字数)
引数 内容
文字列 対象
開始位置 先頭を1として何文字目から
文字数 取り出す長さ

開始位置は1から数えます。 0からではありません。

基本の使い方

A1に ABC-1234-XY が入っているとします。

=MID(A1, 5, 4)   → 1234

5文字目から4文字を取り出しています。

区切り文字の間を取り出す

実務ではこちらが主になります。FIND で位置を求めて計算します。

ABC-1234-XY から真ん中の 1234 を取り出す場合:

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

読みにくいので分解します。

  • FIND("-", A1) … 1つ目の「-」の位置(4)
  • FIND("-", A1, 5)5文字目以降で「-」を探す=2つ目の位置(9)
  • – 開始位置 = 4 + 1 = 5
  • – 文字数 = 9 − 4 − 1 = 4

FIND の第3引数(検索開始位置)を使うのがポイントです。

とはいえ、この用途なら SPLITREGEXEXTRACT のほうが圧倒的に短く書けます。

=INDEX(SPLIT(A1, "-"), 1, 2)
=REGEXEXTRACT(A1, "-([^-]+)-")

MIDを長い数式で使い始めたら、他の関数への置き換えを検討してください。

文字数を大きめに指定してもいい

文字数が足りなくても、MIDはエラーになりません。残り全部を返します。

=MID(A1, 5, 999)   → 1234-XY

「ここから最後まで」を取り出したいときに便利です。RIGHTLEN を計算するより簡単です。

実用例

生年月日の文字列から年月日を分ける

A1が 20260401 の場合:

=MID(A1, 1, 4)   → 2026
=MID(A1, 5, 2)   → 04
=MID(A1, 7, 2)   → 01

日付に変換するなら DATE と組み合わせます。

=DATE(MID(A1,1,4), MID(A1,5,2), MID(A1,7,2))

8桁の数値を日付に直す定番の書き方です。ただしA1が数値の場合は TEXT で文字列にしてから渡してください。

=DATE(MID(TEXT(A1,"00000000"),1,4), MID(TEXT(A1,"00000000"),5,2), MID(TEXT(A1,"00000000"),7,2))

商品コードの中間を取り出す

位置が固定なら、MIDが最も素直です。

=MID(A1, 4, 3)

1文字ずつ分解する

ARRAYFORMULAROW を組み合わせます。

=ARRAYFORMULA(MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1))

A1の文字が1文字ずつ縦に並びます。文字種の判定や、1文字ずつの変換をしたいときに使います。

全行に適用する

=ARRAYFORMULA(IF(A2:A="", "", MID(A2:A, 5, 4)))

位置が固定なら、この形が最も確実です。

エラーの対処

#VALUE! が出る

  • – 開始位置に0以下を指定している(1から数える
  • – 文字数にマイナスを指定している

FIND の計算結果がマイナスになっていないか確認してください。

空文字が返る

開始位置が文字列の長さを超えています。エラーにはならず、空文字になります。気づきにくいので注意してください。

=IF(LEN(A1) < 5, "短すぎ", MID(A1, 5, 4))

長さを先に確認する書き方が安全です。

想定と違う位置で切れる

見えない文字(改行・全角スペース・タブ)が含まれています。LEN() で文字数を確認してください。見た目と合わなければ TRIMCLEAN で整えます。

使い分け

やりたいこと 使う関数
先頭から LEFT
末尾から RIGHT
位置が固定の途中 MID
区切り文字で分ける SPLIT
パターンで取り出す REGEXEXTRACT

MIDが最も向いているのは、位置が完全に固定されているデータです。固定長のコード、8桁の日付、伝票番号など。可変長になったら他の関数に切り替えてください。

まとめ

  • – 書式は =MID(文字列, 開始位置, 文字数)
  • 開始位置は1から数える
  • – 文字数を大きめに指定すると残り全部が返る
  • – 位置が固定のデータに最適。可変長なら SPLIT / REGEXEXTRACT
  • – 開始位置が長さを超えると、エラーにならず空文字が返る
  • – 8桁数値を日付にするなら DATE と組み合わせる

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です