スプレッドシートのMID関数の使い方で悩んでいませんか?商品コードの中間部分だけ、日付の月や日だけを取り出したい場面はよくありますよね。
でも、文字列の途中を手作業で切り出すのは大変です。データ件数が増えるほど、時間もミスも増えていきます。
MID関数を使えばこの作業が一瞬で完了します。この記事では基本構文から実務での活用例、エラー対処法まで丁寧に解説します。
MID関数とは?スプレッドシートで途中の文字を取り出す基本構文
MID関数は、セルの文字列を任意の位置から指定した文字数だけ取り出す関数です。先頭でも末尾でもなく「途中」から切り出せるのが特徴ですよ。
「MID(ミッド)」は英語の「middle(中間)」が語源です。文字列の中間部分を取り出す動作を表しています。ExcelとGoogleスプレッドシートで完全互換なので、どちらでも使えます。
書き方(構文)と引数の意味
=MID(文字列, 開始位置, 文字数)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 文字列 | 必須 | 取り出し元のセルまたはテキスト |
| 開始位置 | 必須 | 取り出しを始める位置(先頭が1) |
| 文字数 | 必須 | 取り出す文字数 |
LEFT関数やRIGHT関数と違い、3つの引数はすべて必須です。省略するとエラーになるので注意してください。
開始位置は先頭の文字を「1」として数えます。たとえば「ABCDE」の「C」は3文字目なので、開始位置は3です。
全角・半角は関係ありません。どちらも1文字=1文字としてカウントされます。バイト数で計算したい場合はMIDB関数を使いましょう。
基本的な使用例
セルA1に「東京都新宿区西新宿」と入力されているとします。
=MID(A1, 4, 3) → 「新宿区」
=MID(A1, 1, 3) → 「東京都」(先頭からならLEFTでもOK)
=MID(A1, 7, 3) → 「西新宿」
何文字目から何文字取り出すかを指定するだけです。シンプルですね。
実務でよく使うMID関数の活用例
MID関数が実際の業務でどう役立つか、よく使うパターンを3つ紹介します。
商品コードの中間部分を取り出す
「A-1234-BK」のような商品コードで、中央の数字部分だけ取り出したい場面です。
=MID(A2, 3, 4) → 「1234」
3文字目から4文字を取り出しています。コードの形式が決まっていれば、これだけで完了です。
取り出した数字を計算に使いたい場合はVALUE関数で変換しましょう。MID関数の結果は常に文字列として返ります。
=VALUE(MID(A2, 3, 4)) → 1234(数値)
日付文字列から月や日を取り出す
「2026-03-18」のような日付文字列から、月や日だけを取り出す例です。
=MID(A2, 6, 2) → 「03」(月の部分)
=MID(A2, 9, 2) → 「18」(日の部分)
年はLEFT関数、日はRIGHT関数でも取れます。でも月のように「途中にある文字」はMID関数の出番ですね。
電話番号の市内局番を取り出す
「03-1234-5678」のような電話番号から市内局番を取り出す例です。
=MID(A2, 4, 4) → 「1234」
4文字目から4文字を取り出しています。ハイフン位置が固定の場合はシンプルに書けますよ。
TIP
ハイフンの位置が固定でない場合は、SUBSTITUTE関数でハイフンを除去してからMIDで取り出すと確実です。
FIND関数と組み合わせて可変長の切り出しをする(応用)
MID関数は開始位置と文字数を固定で指定します。でも「区切り文字の位置がデータによって違う」ケースもありますよね。
そこで便利なのがFIND関数との組み合わせです。FINDは指定した文字が何文字目にあるかを返します。大文字と小文字を区別して検索する関数です。区別が不要な場合はSEARCH関数を使ってください。
メールアドレスからドメインを取り出す
メールアドレスの@より後ろのドメイン部分を取り出す例です。
=MID(A1, FIND("@", A1)+1, LEN(A1))
ちょっとむずかしく見えますが、分解すると簡単です。
FIND("@", A1)で@が何文字目かを取得する- そこに1を足して「@の次の文字位置」を計算する
- 文字数にLEN(A1)で全体の長さを指定する
文字数を大きめに指定しても、末尾までの文字が返るだけです。エラーにはなりません。
「tanaka@example.com」なら@は7文字目です。8文字目から残り全部を取り出すので、結果は「example.com」になります。
NOTE
LEFT関数を使えば、逆に@より前(ユーザー名)を取り出せます。詳しくは「スプレッドシートのLEFT関数の使い方|左から文字取得」で解説しています。
2つの区切り文字の間を取り出す
「営業部-田中太郎-東京」のようなデータがあるとします。1つ目と2つ目のハイフンの間にある「田中太郎」を取り出してみましょう。
=MID(A1, FIND("-",A1)+1, FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1)
数式が長く見えますが、やっていることは3ステップです。
- 1つ目の
-の位置を取得する - 2つ目の
-の位置を取得する(第3引数で検索開始位置を指定) - 2つの位置の差から取り出す文字数を計算する
これはMID関数ならではの使い方です。LEFT関数やRIGHT関数では対応できません。
IFERRORでエラーを防ぐ
対象セルに区切り文字がない場合、FINDはエラーを返します。エラーを防ぐにはIFERRORでラップしましょう。
=IFERROR(MID(A1, FIND("-",A1)+1, LEN(A1)), "該当なし")
区切り文字があれば結果を、なければ「該当なし」を返します。実務データは必ずしもきれいとは限りません。IFERRORパターンは覚えておくと安心ですよ。
LEFT・RIGHT・MIDの違いと使い分け
文字列を取り出す関数にはMID以外に「LEFT」と「RIGHT」があります。どれも文字列の一部を切り出す関数ですが、取り出す位置が異なります。
3関数の比較一覧
| 関数 | 取り出す位置 | 構文 | 使用例 |
|---|---|---|---|
| LEFT | 左端(先頭)から | =LEFT(文字列, 文字数) | 都道府県名、カテゴリコード |
| RIGHT | 右端(末尾)から | =RIGHT(文字列, 文字数) | 電話番号末尾4桁、拡張子 |
| MID | 任意の開始位置から | =MID(文字列, 開始位置, 文字数) | 商品コードの中間部分、日付の月 |
引数の数が違う点に注意してください。LEFTとRIGHTは2引数(文字数は省略可)ですが、MIDは3引数すべて必須です。
どれを使うか迷ったときの判断フレーム
取り出したい文字がどこにあるかで選べます。
「2026-03-18」から年を取りたいなら先頭4文字なのでLEFTです。日だけなら末尾2文字なのでRIGHTになります。月は途中にあるのでMIDの出番ですね。
よくあるエラーと対処法
MID関数で思ったとおりに動かないときのパターンを解説します。
開始位置に0やマイナスを指定すると#VALUE!エラー
開始位置は1以上の整数を指定する必要があります。0やマイナスの値は受け付けません。
=MID(A1, 0, 3) → #VALUE!エラー
=MID(A1, -1, 3) → #VALUE!エラー
LEFT関数はLEFT(A1, 0)で空文字を返します。でもMIDは開始位置に0を指定できません。この違いに注意してください。
文字数にマイナスを指定すると#VALUE!エラー
文字数もマイナスの値は指定できません。0は指定できますが、空文字列が返ります。
=MID(A1, 2, -1) → #VALUE!エラー
=MID(A1, 2, 0) → ""(空文字列)
開始位置が文字列の長さを超えると空文字列
開始位置が文字列の文字数より大きい場合は空文字列が返ります。エラーにはなりません。
=MID("Hello", 10, 3) → ""(空文字列)
文字数が残りの文字数を超えても大丈夫
文字数を大きく指定しても、末尾までの文字が返るだけです。エラーにはなりません。
=MID("Hello", 3, 100) → 「llo」
この仕様はFIND関数との組み合わせで活用します。末尾までの正確な文字数がわからなくても、LEN関数で全体の長さを指定すれば確実です。
結果が文字列になる(数値として使えない)
MID関数の結果は常に文字列型です。数字を取り出しても、そのままでは計算に使えません。
=MID("A-1234-BK", 3, 4) → 「1234」(文字列)
=VALUE(MID("A-1234-BK", 3, 4)) → 1234(数値)
合計や比較に使うときはVALUE関数で変換してくださいね。
まとめ
MID関数の要点を整理します。
| ポイント | 内容 |
|---|---|
| 基本構文 | =MID(文字列, 開始位置, 文字数) |
| 引数 | 3つすべて必須(LEFT/RIGHTと異なり省略不可) |
| 開始位置 | 先頭の文字が1(0はエラー) |
| 文字数超過 | 末尾までの文字を返す(エラーにならない) |
| 開始位置超過 | 空文字列を返す(エラーにならない) |
| 全角・半角 | どちらも1文字としてカウント |
| 結果の型 | 常に文字列(数値にはVALUE関数で変換) |
MID関数は文字列操作の三本柱の1つです。まずは「何文字目から何文字取り出す」というシンプルな使い方から試してみてください。
慣れてきたらFIND関数との組み合わせにも挑戦しましょう。区切り文字の位置に応じた柔軟な切り出しができるようになると、実務でのデータ整理の幅が一気に広がりますよ。
LEFT関数(先頭から切り出し)やRIGHT関数(末尾から切り出し)と合わせて、文字列操作の三本柱として活用してみてくださいね。
