経理・総務・営業事務の現場では、1つのセルに入っている文字列から一部分だけを取り出したい場面が頻繁にあります。「商品コードの先頭3桁だけを見てカテゴリ別に集計したい」「電話番号から市外局番だけを抜き出したい」といったケースです。こうした「文字列の一部を切り出す」処理を担当するのがLEFT・RIGHT・MIDの3関数ですが、構文自体は単純な反面、実際のデータは思っているほど桁数や形式が統一されておらず、エラーにはならないのに値だけがズレるという厄介な事故が起きやすい関数でもあります。

LEFT・RIGHT・MIDの基本構文

3つとも「元になる文字列」と「何文字取り出すか」を指定する点は共通していますが、切り出す位置がそれぞれ異なります。

=LEFT(文字列, 文字数) 左端から指定文字数を取り出す
=RIGHT(文字列, 文字数) 右端から指定文字数を取り出す
=MID(文字列, 開始位置, 文字数) 指定した位置から指定文字数を取り出す

例:A1セルに「TKY-2026-0931」という商品コードが入っている場合
=LEFT(A1,3) → "TKY"(先頭3文字)
=MID(A1,5,4) → "2026"(5文字目から4文字)

LEFT

  • 左端(先頭)から切り出す
  • 商品コードの先頭カテゴリ記号など

RIGHT

  • 右端(末尾)から切り出す
  • ファイル名の拡張子、末尾のチェック桁など

MID

  • 途中の指定位置から切り出す
  • コードの中間にある年月・連番部分など

位置が固定でない場合はFIND関数と組み合わせる

LEFT・RIGHT・MIDは「何文字目から」を数値で指定する関数のため、対象文字列の長さや構造がすべて同じであることが前提になります。しかし実際のデータでは、ハイフンや記号の位置が一定でないことが少なくありません。そこで役立つのがFIND関数です。FIND関数で「-(ハイフン)」など目印になる文字が何文字目にあるかを調べ、その結果をMIDやLEFTの文字数・開始位置の引数に渡すことで、桁数が異なるデータにも対応できる「動的な切り出し」が可能になります。

例:A1に「03-1234-5678」(市外局番2桁)とA2に「0942-12-3456」(市外局番4桁)が混在する場合
=LEFT(A1,FIND("-",A1)-1)

最初のハイフンの位置を都度FIND関数で調べてから、その手前までをLEFTで切り出すため、市外局番の桁数がセルごとに違っても正しく取り出せます。文字列全体の長さを使いたい場合はLEN関数も組み合わせます。

実務でのよくある使用シーン

総務担当者であれば、取引先リストや社員名簿の電話番号列から市外局番だけを抜き出して、地域別の連絡先一覧を作る場面があります。ところが電話番号は「03」「0942」のように市外局番の桁数が地域によって異なり、さらに入力者によってハイフンの有無や全角・半角がバラバラなことも多く、LEFTで一律に文字数を固定すると一部の行だけ数字が欠けたり余分な数字が混ざったりします。経理担当者であれば、商品コードの先頭3桁が商品カテゴリを表しているような社内ルールがある場合に、LEFT関数でカテゴリコードを抽出し、それをキーにSUMIFやCOUNTIFSでカテゴリ別集計を行うという使い方が典型的です。この場合はコードの桁数が社内で厳密に統一されていることが前提になるため、実際にすべてのコードが本当に同じ桁数か、イレギュラーなコードが紛れていないかを事前に確認しておく必要があります。

LEFT・RIGHT・MIDでよくあるエラー・トラブルと対処法

#VALUE! エラー(MID関数)

MID関数で特に起きやすいエラーです。主な原因は次の2つです。

  • 3番目の引数「文字数」を省略している
  • 「文字数」や「開始位置」にマイナスの数値を指定している
例:=MID(A1,5) と文字数の引数を書き忘れている(正しくは=MID(A1,5,4)のように3つ目の引数が必須)

対処法として、MID関数は「文字列・開始位置・文字数」の3つの引数がすべて必須であることを確認してください。特にLEFT・RIGHTは引数が2つで動くため、同じ感覚でMIDを2引数だけで書いてしまうミスが多く見られます。

エラーにはならないが値がズレる(桁数のばらつき)

最も気づきにくいトラブルです。数式自体は正常に動作しエラー表示も出ないため、目視で気づくまで誤ったデータが集計・出力され続けます。

例:商品コードの先頭3桁をLEFT(A1,3)でカテゴリ抽出しているが、一部の商品だけコードが4桁で始まっており、本来のカテゴリの途中までしか取れていない

対処法として、固定位置で切り出す数式を組む前に、対象データの桁数・形式が本当にすべて統一されているかをLEN関数などで一度チェックする習慣をつけましょう。桁数が完全に統一されていない場合は、前述のFIND関数と組み合わせた動的な切り出しに切り替えるのが安全です。

全角・半角の混在でハイフンの位置がズレる

FIND関数と組み合わせて動的に切り出す場合、目印にしている記号自体の表記が統一されていないとうまく機能しません。

例:一部のセルは半角の「-」、別のセルは全角の「-」でハイフンが入力されており、FIND("-",A1)が全角ハイフンのセルだけ#VALUE!エラーになる

対処法として、事前にSUBSTITUTE関数で全角ハイフンを半角に統一してからFIND・LEFT・MIDを実行する、または入力規則で記号の入力方法を統一しておくことをおすすめします。

初心者がつまずきやすいポイントとコツ

まとめ

LEFT・RIGHT・MIDは構文自体はシンプルですが、実務で扱うデータは「本当にすべて同じ桁数・同じ形式か」を疑ってかかる必要があります。固定の文字数で切り出す前にLEN関数で桁数を確認し、桁数や記号の位置がバラバラなデータにはFIND関数と組み合わせた動的な切り出しを使う、というのが事故を防ぐ基本方針です。MID関数は文字数の指定を忘れずに、エラーが出ないからといって値が正しいとは限らない点にも注意しましょう。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。

よくある質問

MIDで#VALUE!エラーが出るのはなぜですか?
文字数の引数を省略した場合や、マイナスの数値を指定した場合に#VALUE!エラーになります。MIDは「文字列、開始位置、文字数」の3つの引数がすべて必須のため、開始位置以降に何文字取り出すかを必ず指定してください。開始位置が文字列の長さより大きい場合はエラーにはならず空文字が返る点にも注意が必要です。
電話番号から市外局番だけを取り出したいのですが、LEFTで固定文字数を指定するとうまくいきません。なぜですか?
市外局番の桁数は2桁・3桁・4桁とデータによってばらつきがあるため、LEFTで固定の文字数を指定すると一部のデータだけ余分な数字を含んだり途中で切れたりします。ハイフンの位置をFIND関数で探してから、その位置までをMIDやLEFTで切り出すようにすると、桁数が異なるデータが混在していても正しく取り出せます。
LEFT・RIGHT・MIDの違いは何ですか?使い分け方を教えてください。
LEFTは文字列の左端(先頭)から、RIGHTは右端(末尾)から、MIDは文字列の途中の指定した位置から、それぞれ文字を切り出す関数です。切り出したい範囲が先頭であればLEFT、末尾であればRIGHT、先頭でも末尾でもない途中の位置であればMIDを使うのが基本の使い分けです。

関連記事

→ LEFT・RIGHT・MIDの数式を作ってみる ← 記事一覧に戻る