LEFT・RIGHT・MID関数の使い方|文字列の抽出方法
LEFT関数、RIGHT関数、MID関数は、文字列の一部を抽出するExcelの基本関数です。左端から、右端から、または中央の任意の位置から文字列を取り出せます。商品コードの分類記号の抽出、電話番号の市外局番の分離など、実務で頻繁に使われます。
各関数の基本構文
LEFT関数
=LEFT(文字列, [文字数])
文字列の左端(先頭)から指定した文字数分を抽出します。
RIGHT関数
=RIGHT(文字列, [文字数])
文字列の右端(末尾)から指定した文字数分を抽出します。
MID関数
=MID(文字列, 開始位置, 文字数)
文字列の指定した位置から指定した文字数分を抽出します。
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 文字列 | 抽出元の文字列またはセル参照 | 必須 |
| 文字数 | 抽出する文字数。LEFT・RIGHTで省略すると1 | LEFT・RIGHTでは任意、MIDでは必須 |
| 開始位置 | 抽出を開始する位置(1から数える) | MIDのみ必須 |
実践例1:商品コードの分類記号を抽出
商品コード「PC-A001-BK」から各部分を抽出します。
先頭2文字(カテゴリ)を抽出する場合は次のようにします。
=LEFT(A2, 2)
結果は「PC」です。
末尾2文字(カラーコード)を抽出する場合はこうします。
=RIGHT(A2, 2)
結果は「BK」です。
中央の品番(4文字目から4文字)を抽出する場合は次の通りです。
=MID(A2, 4, 4)
結果は「A001」です。
実践例2:郵便番号の前半・後半を分離
「123-4567」形式の郵便番号を前半3桁と後半4桁に分けます。
前半3桁を取得する場合はこうします。
=LEFT(A2, 3)
結果は「123」です。
後半4桁を取得する場合は次のようにします。
=RIGHT(A2, 4)
結果は「4567」です。
実践例3:FIND関数と組み合わせた可変長の抽出
区切り文字の位置が一定でない場合、FIND関数で位置を検索してから抽出します。
メールアドレス「[email protected]」から@より前のユーザー名を抽出する例です。
=LEFT(A2, FIND("@", A2) - 1)
FIND関数が@の位置(5)を返し、そこから1を引いた4文字をLEFT関数で抽出します。結果は「user」です。
@より後ろのドメインを抽出する場合は次のように書きます。
=MID(A2, FIND("@", A2) + 1, LEN(A2) - FIND("@", A2))
LEN関数で全体の文字数を取得し、@の位置を引くことで、ドメイン部分の文字数を計算しています。結果は「example.com」です。
実践例4:日付文字列の分解
「20260601」のような8桁の日付文字列を年・月・日に分解します。
=LEFT(A2, 4) ' 結果: "2026"
=MID(A2, 5, 2) ' 結果: "06"
=RIGHT(A2, 2) ' 結果: "01"
分解した値をDATE関数と組み合わせて日付型に変換することもできます。
=DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2))
実践例5:LEN関数との組み合わせ
文字列の末尾から特定の部分を除いた残りを抽出する例です。
ファイル名から拡張子を除いた部分を取得します。「report.xlsx」から「report」を抽出します。
=LEFT(A2, LEN(A2) - LEN(RIGHT(A2, LEN(A2) - FIND(".", A2)))) - 1)
この数式は複雑になるため、FIND関数を使ったシンプルな方法で記述します。
=LEFT(A2, FIND(".", A2) - 1)
結果は「report」です。ただし、ファイル名に複数のドットが含まれる場合は正しく動作しません。その場合はSUBSTITUTE関数と組み合わせるなどの工夫が必要です。
よくあるエラーと対処法
#VALUE!エラー
以下の場合に発生します。
- 文字数に負の値を指定した場合: 計算結果が負にならないよう確認する
- MID関数の開始位置が0以下の場合: 開始位置は1以上を指定する
- FIND関数で検索文字が見つからない場合: FIND関数が#VALUE!を返し、それが伝播する
IFERROR関数で対処できます。
=IFERROR(LEFT(A2, FIND("@", A2) - 1), "形式エラー")
全角文字と半角文字の扱い
LEFT、RIGHT、MID関数は全角文字も半角文字も1文字として数えます。バイト数で処理したい場合は、LEFTB、RIGHTB、MIDB関数を使用します。
# 文字数ベース
=LEFT("エクセル", 2) ' 結果: "エク"
# バイト数ベース
=LEFTB("エクセル", 2) ' 結果: "エ"(2バイト=全角1文字)
数値が入ったセルの扱い
LEFT、RIGHT、MID関数は引数を文字列として処理します。数値が入ったセルを指定すると、自動的に文字列に変換されますが、書式設定(桁区切りなど)は反映されません。必要に応じてTEXT関数で事前に変換してください。
関連する文字列関数
| 関数 | 用途 |
|---|---|
| LEN | 文字列の文字数を返す |
| FIND | 特定の文字の位置を返す(大文字・小文字を区別) |
| SEARCH | 特定の文字の位置を返す(大文字・小文字を区別しない) |
| TRIM | 前後のスペースを除去する |
| SUBSTITUTE | 文字列の置換を行う |
これらの関数と組み合わせることで、より柔軟な文字列処理が可能になります。
Google スプレッドシートでの互換性
LEFT、RIGHT、MID関数はGoogle スプレッドシートでも同じ構文で利用できます。LEFTB、RIGHTB、MIDB関数もサポートされています。FIND関数やLEN関数との組み合わせも同様に動作します。
まとめ
LEFT・RIGHT・MID関数は文字列から一部を抽出する基本関数です。
- LEFT関数は先頭から、RIGHT関数は末尾から、MID関数は任意の位置から抽出する
- FIND関数やLEN関数と組み合わせて可変長の文字列にも対応できる
- 全角・半角を区別したい場合はLEFTB、RIGHTB、MIDB関数を使う
- エラー処理にはIFERROR関数を組み合わせる
文字列の抽出はデータ整理の基本スキルです。コードの解析やデータのクレンジングで活用してください。