=LEFT(A2,3)はA2の文字列の先頭3文字を、=RIGHT(A2,1)は最後の1文字を、=MID(A2,5,4)は5文字目から4文字を返します。コードNYC-2041-Bなら、それぞれNYC、B、2041です。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Code | City | Number | Size |
| 2 | NYC-2041-B | NYC | 2041 | B |
| 3 | LAX-1187-A | LAX | 1187 | A |
| 4 | SFO-3302-C | SFO | 3302 | C |
| 5 | BOS-0915-B | BOS | 0915 | B |
C2をクリックして5を4に変えてみてください。結果がハイフンから始まります。スペースや記号も1文字として数え、最初の文字の位置は1です。
構文
=LEFT(text, [num_chars])
=RIGHT(text, [num_chars])
=MID(text, start_num, num_chars)
- LEFTとRIGHTの
num_chars(文字数)は省略でき、省略すると1になります。 - 実際の文字数より多く指定してもエラーにはならず、文字列全体が返ります。
=LEFT("Ann",10)はAnnです。 - 文字数がマイナスになると#VALUE!になります。たとえば3文字より短い文字列に
=LEFT(A2,LEN(A2)-3)を使った場合です。
長さが変わるとき: LEFT、RIGHT、MIDとFIND
コードの長さがすべて同じことはめったにありません。FINDで区切りの位置を探し、文字数は数式に計算させます:
| A | B | C | |
|---|---|---|---|
| 1 | Code | Before the dash | After the dash |
| 2 | NY-2041 | NY | 2041 |
| 3 | BOSTON-15 | BOSTON | 15 |
| 4 | LA-30087 | LA | 30087 |
FIND("-",A2)はハイフンの位置を返し、NY-2041では3です。LEFT(A2,3-1)はその前の2文字を取り出します。MID(A2,3+1,50)はハイフンの次から最大50文字を取り出します。どのコードよりも長いので、末尾まで届きます。
Microsoft 365とExcel 2024では、TEXTBEFORE(A2,"-")とTEXTAFTER(A2,"-")がもっと短い数式で同じ結果を返します。文字列の分割を参照してください。
先頭や末尾の文字を削除する
文字を取り除くには、残りを取り出します。LENで全体の長さを求め、取り除きたい分を引きます:
| A | B | C | |
|---|---|---|---|
| 1 | Text | Without first 3 | Without last 2 |
| 2 | ID-58210 | 58210 | ID-582 |
| 3 | ID-7734 | 7734 | ID-77 |
| 4 | ID-120 | 120 | ID-1 |
| A | B | |
|---|---|---|
| 1 | Card | Last four |
| 2 | 4111 2222 3333 9876 |
やってみよう: B2で、A2のカード番号の最後の4文字を返してください。
コードから数字を取り出す
LEFT、RIGHT、MIDは、取り出した文字が数字でも常に文字列を返します。文字列の数字は数値のように見えますがSUMでは無視されるので、取り出した数字の合計が0になることがあります:
| A | B | C | |
|---|---|---|---|
| 1 | Order | MID (text) | VALUE(MID) |
| 2 | SO-0120-X | 0120 | 120 |
| 3 | SO-0345-Y | 0345 | 345 |
| 4 | SO-1000-Z | 1000 | 1000 |
| 5 | Total | 0 | 1465 |
B列はまだ文字列なので先頭の0が付いた0120を表示し、B5の合計は0です。C列はVALUEでそれぞれを変換していて、合計が正しく出ます。=--MID(A2,4,4)や=MID(A2,4,4)*1も同じように変換します。詳しくは文字列を数値に変換するを参照してください。
| A | B | |
|---|---|---|
| 1 | Item | Quantity |
| 2 | PK-045-BAG |
やってみよう: 数量は2つのハイフンの間にあり、常に3桁です。B2で、合計できる数値として取り出してください。
よくある間違い: 日付にLEFTを使う
日付は数値として保存されているので、日付2026-03-15に=LEFT(B2,4)を使っても2026は返りません。返るのは、その日付の中身であるシリアル値46096の先頭4桁、4609です。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Event | Date | LEFT(date,4) | Year |
| 2 | Launch | 2026-03-15 | 4609 | 2026 |
| 3 | 2026 |
年を数値で取り出すならYEAR(B2)を、文字列で取り出すならTEXT(B2,"yyyy")を使います。ほかの部分はMONTH、DAY、それに"mmm"や"dd"を指定したTEXTで取り出せます。
よくある質問
Excelで先頭からN文字を取り出すには?
LEFTに文字数を指定します。=LEFT(A2,3)は先頭の3文字を返します。2つ目の引数を省いた=LEFT(A2)は最初の1文字だけを返します。
Excelで先頭や末尾の文字を削除するには?
LENを使って残りを取り出します。=RIGHT(A2,LEN(A2)-3)は先頭の3文字を、=LEFT(A2,LEN(A2)-2)は末尾の2文字を取り除きます。
MIDが返した数字を合計できないのはなぜですか?
LEFT、RIGHT、MIDは常に文字列を返し、SUMは文字列を無視するからです。VALUEかマイナス記号2つで数値に変えます:=VALUE(MID(A2,5,4))または=--MID(A2,5,4)。
Excelで特定の文字より前の文字列を取り出すには?
その文字の位置を探して1を引きます。=LEFT(A2,FIND("-",A2)-1)は最初のハイフンより前をすべて返します。Microsoft 365では=TEXTBEFORE(A2,"-")でも同じ結果になります。