経理・総務・営業事務の現場では、1つのセルに入っている文字列から一部分だけを取り出したい場面が頻繁にあります。「商品コードの先頭3桁だけを見てカテゴリ別に集計したい」「電話番号から市外局番だけを抜き出したい」といったケースです。こうした「文字列の一部を切り出す」処理を担当するのがLEFT・RIGHT・MIDの3関数ですが、構文自体は単純な反面、実際のデータは思っているほど桁数や形式が統一されておらず、エラーにはならないのに値だけがズレるという厄介な事故が起きやすい関数でもあります。
LEFT・RIGHT・MIDの基本構文
3つとも「元になる文字列」と「何文字取り出すか」を指定する点は共通していますが、切り出す位置がそれぞれ異なります。
例: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の文字数・開始位置の引数に渡すことで、桁数が異なるデータにも対応できる「動的な切り出し」が可能になります。
=LEFT(A1,FIND("-",A1)-1)
最初のハイフンの位置を都度FIND関数で調べてから、その手前までをLEFTで切り出すため、市外局番の桁数がセルごとに違っても正しく取り出せます。文字列全体の長さを使いたい場合はLEN関数も組み合わせます。
実務でのよくある使用シーン
総務担当者であれば、取引先リストや社員名簿の電話番号列から市外局番だけを抜き出して、地域別の連絡先一覧を作る場面があります。ところが電話番号は「03」「0942」のように市外局番の桁数が地域によって異なり、さらに入力者によってハイフンの有無や全角・半角がバラバラなことも多く、LEFTで一律に文字数を固定すると一部の行だけ数字が欠けたり余分な数字が混ざったりします。経理担当者であれば、商品コードの先頭3桁が商品カテゴリを表しているような社内ルールがある場合に、LEFT関数でカテゴリコードを抽出し、それをキーにSUMIFやCOUNTIFSでカテゴリ別集計を行うという使い方が典型的です。この場合はコードの桁数が社内で厳密に統一されていることが前提になるため、実際にすべてのコードが本当に同じ桁数か、イレギュラーなコードが紛れていないかを事前に確認しておく必要があります。
LEFT・RIGHT・MIDでよくあるエラー・トラブルと対処法
MID関数で特に起きやすいエラーです。主な原因は次の2つです。
- 3番目の引数「文字数」を省略している
- 「文字数」や「開始位置」にマイナスの数値を指定している
対処法として、MID関数は「文字列・開始位置・文字数」の3つの引数がすべて必須であることを確認してください。特にLEFT・RIGHTは引数が2つで動くため、同じ感覚でMIDを2引数だけで書いてしまうミスが多く見られます。
最も気づきにくいトラブルです。数式自体は正常に動作しエラー表示も出ないため、目視で気づくまで誤ったデータが集計・出力され続けます。
対処法として、固定位置で切り出す数式を組む前に、対象データの桁数・形式が本当にすべて統一されているかをLEN関数などで一度チェックする習慣をつけましょう。桁数が完全に統一されていない場合は、前述のFIND関数と組み合わせた動的な切り出しに切り替えるのが安全です。
FIND関数と組み合わせて動的に切り出す場合、目印にしている記号自体の表記が統一されていないとうまく機能しません。
対処法として、事前にSUBSTITUTE関数で全角ハイフンを半角に統一してからFIND・LEFT・MIDを実行する、または入力規則で記号の入力方法を統一しておくことをおすすめします。
初心者がつまずきやすいポイントとコツ
- 「文字数はすべて同じ」という思い込みを疑う。電話番号・商品コード・住所などは一見同じ形式に見えても、桁数やハイフンの有無が微妙に異なるデータが混在していることが非常に多いです。固定位置で切り出す前に、必ずLEN関数などで実際の桁数を確認しましょう。
- MIDの文字数指定を忘れない。LEFT・RIGHTと違い、MIDは開始位置と文字数の両方を指定する必要があります。「そこから最後まで」を取りたい場合は、文字数に十分大きな数値(例:100など)を指定しておけば、実際の文字列がそれより短くても問題なく動作します。
- 開始位置が文字列の長さを超えてもエラーにならない。MIDの開始位置が文字列の長さを超えている場合、エラーではなく空文字("")が返るため、エラー表示だけを頼りに不具合を見つけようとすると見落としてしまいます。
- 全角・半角、スペースの有無も「桁数」に影響する。目に見えないスペースが混入しているデータでは、見た目の桁数と実際の文字数がずれることがあります。TRIM関数で余分なスペースを除去してから切り出すと安定します。
まとめ
LEFT・RIGHT・MIDは構文自体はシンプルですが、実務で扱うデータは「本当にすべて同じ桁数・同じ形式か」を疑ってかかる必要があります。固定の文字数で切り出す前にLEN関数で桁数を確認し、桁数や記号の位置がバラバラなデータにはFIND関数と組み合わせた動的な切り出しを使う、というのが事故を防ぐ基本方針です。MID関数は文字数の指定を忘れずに、エラーが出ないからといって値が正しいとは限らない点にも注意しましょう。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。
よくある質問
関連記事
- CONCAT・TEXTJOIN関数で文字列を結合する方法
- TRIM・SUBSTITUTE関数で全角スペースが消えない原因と対処法
- UPPER・LOWER・PROPER関数の使い方
- LEN関数で文字数を数える方法|入力規則との組み合わせと全角スペース・改行のよくある落とし穴