エクセルで文字列の一部を抽出するには、取り出したい場所によって関数を使い分けます。決まった位置なら LEFT・RIGHT・MID、「@」や「-」などの区切りの前後なら TEXTBEFORE・TEXTAFTER(または FIND との組み合わせ)、区切りでまとめて分けるなら TEXTSPLIT、関数を使わずにまとめて取り出すならフラッシュフィル(Ctrl+E)です。
文字列の切り出し・抜き出しも、同じ関数でできます。特定の文字以降を抽出するなら =TEXTAFTER(A2,"@")、特定の文字より前なら =TEXTBEFORE(A2,"@") です。
この記事では、目的別の早見表と、実際の Excel の画面で、それぞれの取り出し方を説明します。くわしい使い方は、各関数の記事へのリンクから確かめられます。
目的別:文字列を抽出する方法の早見表
| やりたいこと | 式(例) | 結果 |
|---|---|---|
| 左から2文字 | =LEFT(A2,2) | AB-1234-JP → AB |
| 右から2文字 | =RIGHT(A2,2) | AB-1234-JP → JP |
| 4文字目から4文字 | =MID(A2,4,4) | AB-1234-JP → 1234 |
| 「@」の前 | =TEXTBEFORE(A2,"@") | yamada@example.com → yamada |
| 「@」の後ろ | =TEXTAFTER(A2,"@") | yamada@example.com → example.com |
| 空白で姓と名に分ける | =TEXTSPLIT(A2," ") | 山田 太郎 → 山田|太郎 |
| 住所から都道府県 | =LEFT(A7,IF(MID(A7,4,1)="県",4,3)) | 神奈川県横浜市… → 神奈川県 |
| 関数を使わずにまとめて | フラッシュフィル(Ctrl+E) | 1つ目を入力すると残りを自動で |
TEXTBEFORE・TEXTAFTER・TEXTSPLIT は Microsoft 365・Excel 2024 などの新しい Excel で使えます。古い Excel では、LEFT・MID と FIND を組み合わせます。
左から・右から・途中から文字列を抜き出す(LEFT・RIGHT・MID)
商品コード「AB-1234-JP」のように、取り出したい文字の位置が決まっているときは、LEFT(左から)・RIGHT(右から)・MID(途中から)を使います。
=MID(A2,4,4)

MID は「何文字目から・何文字」を指定します。試したところ、3件とも 4文字目からの4文字(1234・5678・9012)を取り出せました。くわしくは LEFT関数・RIGHT関数・MID関数の記事で説明しています。
特定の文字(「@」や「-」)の前・後ろ(以降)を抽出する(TEXTBEFORE・TEXTAFTER・FIND)
メールアドレスの「@」の前のように、文字数がそろっていない場合は、区切りの文字を目印にします。新しい Excel なら TEXTBEFORE・TEXTAFTER がいちばん簡単です。
=TEXTBEFORE(A2,"@")

古い Excel では、FIND で「@」の位置を調べて、=LEFT(A2,FIND("@",A2)-1)(@の前)、=MID(A2,FIND("@",A2)+1,100)(@の後ろ)とします。結果は TEXTBEFORE・TEXTAFTER と同じでした(③)。「@」が無い「suzuki」では、TEXTBEFORE・TEXTAFTER は #N/A、FIND を使った式は #VALUE! になりました(④)。
2つの文字のあいだを取り出す方法は 特定の文字から特定の文字までを抽出、最後の区切りより後ろは 特定の文字より後ろを抽出で説明しています(TEXTBEFORE・TEXTAFTER関数・FIND関数)。
区切りで分ける・住所から都道府県を取り出す
「山田 太郎」を姓と名の2つのセルに分けるなら、TEXTSPLIT を使います。B2 に =TEXTSPLIT(A2," ") と入れるだけで、姓と名が横の2セルに広がりました(①、TEXTSPLIT関数)。

都道府県は、「神奈川県」「和歌山県」「鹿児島県」の3つだけが4文字です。そこで「4文字目が『県』なら4文字、それ以外は3文字」を LEFT で取り出します(②)。試したところ、東京都・神奈川県・北海道・和歌山県のどれも正しく取り出せました(③)。市区町村まで分ける方法は 住所を都道府県・市町村に分割を見てください。
関数を使わずに取り出す(フラッシュフィル)
1つ目のセル(B2)に、取り出したい結果「yamada」を手で入力し、その下のセル(B3)を選んで Ctrl+E を押します。Excel が規則を読み取って、残りのセルにも自動で入りました(①②)。状態バーには「フラッシュ フィルの変更されたセル: 4」と表示されます(③)。

フラッシュフィルは式ではなく値が入るので、元のデータを書き換えても結果は変わりません。元のデータが変わる表では関数を使います。
よくある間違い
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| #VALUE!・#N/A になる | 目印の文字(@ など)が無いセルがある | TEXTBEFORE は6つ目の引数、FIND の式は IFERROR で空白にする。 |
| 大文字・小文字で見つからない | FIND は大文字と小文字を区別する | 区別しない SEARCH を使う。 |
| 全角の文字を数えたい | LEN は全角も半角も1文字と数える | バイト数で数えるなら LENB(全角は2)。 |
| 元のデータを変えても結果が変わらない | フラッシュフィルで入れた(値になっている) | 関数で取り出す。 |
試したところ、=TEXTBEFORE(A4,"@",,,,"") と6つ目に “” を指定すると、「@」が無いセルは空白になりました。=FIND("a","ABC") は #VALUE!、=SEARCH("a","ABC") は 1 です。LEN(“AB1”) は 3、LENB(“AB1”) は 5 でした。
よくある質問
数字だけ・文字だけを取り出したいときは?
Microsoft 365 なら REGEXREPLACE 関数などで取り出せます(数字だけ・文字だけを取り出す方法)。
1つのセルに改行で入っている文字を分けたいときは?
改行ごとにセルを分割する方法で説明しています。
練習問題で確かめたいときは?
文字列関数の練習問題10問で、LEFT・MID・FIND・SUBSTITUTE などを練習できます。
エクセルで特定の文字以降を抽出するには?
=TEXTAFTER(A2,"@") で、「@」より後ろを取り出せます。yamada@example.com なら example.com です。古い Excel では =MID(A2,FIND("@",A2)+1,100) とします。結果は同じでした。
エクセルで文字列の途中を切り出す関数(substring)は?
MID関数です。「何文字目から・何文字」を指定します。=MID(A2,4,4) で、AB-1234-JP の4文字目から4文字の 1234 を取り出せます。
エクセルで文字列を右から抜き出すには?
RIGHT関数を使います。=RIGHT(A2,2) で、AB-1234-JP の右から2文字の JP を取り出せます。左からなら =LEFT(A2,2) で AB です。
あわせて読みたい:文字列の抽出の関連記事
パターン(形)で文字を探したり取り出したりしたいときは、REGEX関数(正規表現)の使い方もあわせてご覧ください。

コメント