要点 —
LEFT・RIGHT・MIDは文字列を位置で切る3本の物差しです。LEFT(text, n)は先頭からn文字、RIGHT(text, n)は末尾からn文字、MID(text, start, n)はstartの位置からn文字を取り出します。誰もが 必ずつまずく点が2つあります。1つは、結果が常にテキストになること。LEFT(A2,4)で"2026"を取り出しても、VALUE()で包むまではSUMも 数値としての比較もできません。もう1つは、位置のハードコードは脆いこと。 コードの長さが変わった瞬間、切り出し位置がずれてしまいます。MIDは 0 ではなく 1 から数えます。すべての Excel バージョンで動作します。
=LEFT("INV-2026-0042", 3) ' -> "INV"
=RIGHT("INV-2026-0042", 4) ' -> "0042"
=MID("INV-2026-0042", 5, 4) ' -> "2026"
どんなシートでも、いずれ大きな文字列の一部を取り出す必要が出てきます。請求書
番号から年を、電話番号から市外局番を、氏名から名前を。LEFT・RIGHT・MID
はそれを実現する最も古く、最も移植性の高い手段であり、その限界にもかかわらず
ではなく、限界があるからこそ深く理解する価値があります。
この記事で学べること
- 抽出のたびに最初に問うべきこと。私は位置で切っているのか、それとも 内容で切っているのか?
- なぜ
MIDは1始まりなのか、そしてLEFT/RIGHT/MIDが同じ文字列をどう 分け合うのか - 取り出したテキストはなぜテキストなのか — そして計算を生かし続ける
VALUE()という対処法 - 位置のハードコードがなぜシートの中で最も壊れやすい一行なのか
- いつ手を止めて
FIND・TEXTSPLIT・Power Query に切り替えるべきか
考え方の軸: 同じ文字列に置いた3本の物差し
文字列 INV-2026-0042 の下に、位置を1から番号付けした物差しを置いた様子を
思い浮かべてください。LEFT は左端から内側へ読み、RIGHT は右端から内側へ
読み、MID は指定した位置から右へ読みます。検索もせず、データを理解もせず、
ただ文字を数えて切るだけです。
' 位置: 1 2 3 4 5 6 7 8 9 ...
' 文字列: I N V - 2 0 2 6 - 0 0 4 2
=LEFT(A2, 3) ' "INV" — 先頭3文字
=MID(A2, 5, 4) ' "2026" — 5文字目から4文字
=RIGHT(A2, 4) ' "0042" — 末尾4文字
これがすべてです。強力さも危うさも、同じ事実から生まれます。すなわち あなたは正確な位置に賭けているということです。位置が保証されているとき — 固定幅のコード、常に2文字の国コード接頭辞 — これらの関数は完璧です。そうで ないとき、あなたは砂の上に家を建てています(詳しくは後述します)。
すべてを解き明かす規則: 結果は常にテキスト
これは「取り出した数値がなぜ合計されないのか」とフォーラムに人を駆り立てる
落とし穴です。LEFT・RIGHT・MID は、すべての文字が数字であっても
常にテキストを返します。LEFT("2026-04", 4) が返すのは数値 2026 では
なくテキスト "2026" です。だから SUM・>・MIN・グラフの軸はどれも、
それをラベルとして扱います。
明示的に数値へ戻しましょう。
=VALUE(LEFT(A2, 4)) ' テキスト "2026" -> 数値 2026
=--LEFT(A2, 4) ' 同じこと。二重マイナスを使う方法
逆もまた知っておく価値があります。出力がテキストなので、先頭のゼロが残ります。
RIGHT("0042", 4) は 42 に潰れず "0042" を保ちます。これは郵便番号・口座
番号・SKU にはまさに望むとおりの挙動であり、実際に計算が必要なときには
VALUE() で打ち消さなければならない挙動でもあります。
MID は1から数え、num_chars は寛容
MID(text, start_num, num_chars) は 1始まりです。MID("Excel", 1, 2) は
"xc" ではなく "Ex" です。ここでの1つずれは MID で最もよくある間違いです。
切り出しが1文字ずれていたら、他の言語の0始まりの数え方を前提にしていないか
確認してください。
LEFT/RIGHT/MID がエラーで止まらないよう、2つの小さな救いがあります。
LEFT/RIGHTでnum_charsを省略すると、既定で 1 になります。- 存在する文字数より多く要求すると、エラーにならず文字列の残り全部が
返ります。
RIGHT("AB", 10)は#VALUE!ではなく"AB"を返します。
つまりこれらの関数がクラッシュすることはまれです。間違った切り出しを返して 静かに失敗します。そちらの方が厄介です。それこそが本当のリスクであり、最大の 弱点へとまっすぐつながっています。
最大の弱点: 位置のハードコードは脆い
末尾4桁を取るための =RIGHT(A2, 4) は見事に機能します — 5桁の接尾辞を持つ
レコードが届くまでは。そして今や、列のすべての値から1桁を静かに落とし続けて
います。手で打ち込んだ位置は、データが想定どおりの形を保っている間だけ
正しいままです。 現実のデータはそうではありません。
頑健なパターンは、より長い MID ではありません。位置で切るのをやめて、
内容で切り始めることです。区切り文字を見つけ、それを基準に切り出します。
' 脆い: 名前が常に "First Last" で、空白が6文字目にあると仮定している
=LEFT(A2, 5)
' 頑健: 最初の空白が実際にある場所で切る
=LEFT(A2, FIND(" ", A2) - 1) ' 最初の単語(長さ不問)
=MID(A2, FIND("@", A2) + 1, 99) ' メールの @ 以降すべて
この FIND(" ", A2) が要です。LEFT/MID/RIGHT は「ここの文字をくれ」と
答え、FIND と SEARCH は「切るべき目印は
どこにあるのか?」と答えます。組み合わせれば、脆い固定位置の切り出しが、
データに追従するものへと変わります。次は FIND を学んでください。この3つの
関数を単に便利なだけでなく、信頼できるものにしてくれるのがそれです。
判断のポイント: いつ位置を使い、いつ使わないか
位置が本当に固定されているとき — 3文字の通貨コード、固定幅のレガシー
エクスポート、州略称の先頭2文字 — は素の LEFT/RIGHT/MID を使います。
切る位置が文字列の内容に依存した瞬間に、FIND/SEARCH と組み合わせます。
そして、いつ完全に手放すべきかも知っておきましょう。区切り文字で文字列を割る
ためだけに LEFT/MID/RIGHT と FIND を3段に入れ子にしているなら、それは
TEXTSPLIT(Excel 365)の出番という合図
です。これは読みやすい1つの数式で区切り文字を使って分割します。大きな
インポートの一度きりのクリーンアップなら、脆い数式の列より 区切り位置指定
ウィザード や Power Query の方が軽量です。LEFT/MID/RIGHT はメスです。
精密ですが、あなたの狙いの精度以上には正確になりません。
ExcelMaster はどう役立つか
抽出で難しいのは関数そのものではなく、位置を正しく定め、それを頑健に
保つことです。ExcelMaster は 「請求書番号から年を、メールアドレスから
ドメインを取り出して」 といった平易な日本語の依頼を受け取り、正しい FIND
アンカー、結果を数値にする必要があるときの VALUE() ラップ、そして次の変則的
な行で固定位置が壊れる場合の注記を添えて、数式を書きます。何を取り出すかを
説明すれば、文字数の数え方は任せられます。
よくある質問
LEFT、RIGHT、MID の違いは何ですか?
LEFT(text, n) は先頭から n 文字、RIGHT(text, n) は末尾から n 文字、
MID(text, start, n) は start の位置から始まる n 文字を返します。LEFT と
RIGHT は端から切り、MID は指定した任意の場所から切ります。
取り出した数値がなぜ合計されないのですか?
LEFT・RIGHT・MID は数値に見えても常にテキストを返すからです。結果を
VALUE() で包むか(=VALUE(LEFT(A2,4)))、二重マイナスを前に付けて
(=--LEFT(A2,4))本物の数値に変換してください。
MID は0始まりですか、1始まりですか?
1始まりです。MID("Excel", 1, 2) は "Ex" を返します。最初の文字は位置0では
なく位置1です。他の言語に慣れたプログラマーがよく起こす1つずれの原因です。
特定の文字までのテキストを取り出すには?
LEFT を FIND と組み合わせます。=LEFT(A2, FIND(" ", A2) - 1) は最初の空白
より前のすべてを返します。これは文字の実際の位置に追従するため、長さの
ハードコードよりはるかに頑健です。
文字列より多い文字数を MID に要求するとどうなりますか?
何も壊れません。MID(および RIGHT/LEFT)は存在する分だけを返します。
RIGHT("AB", 10) はエラーではなく "AB" を返します。便利ですが、間違った
長さが警告なしに静かに失敗することも意味します。
検証環境
検証環境: Excel 365 (Windows 11) — 最終確認 2026-06-29。
関連ガイド: Excel FIND・SEARCH · Excel SUBSTITUTE・REPLACE · Excel TEXTSPLIT · Excel TEXTJOIN
