エクセルで文字列を抽出する方法まとめ|左・右・途中・特定の文字の前後・都道府県・フラッシュフィル

エクセルで文字列を抽出する方法まとめ|左・右・途中・「@」の前後・都道府県・フラッシュフィル(早見表)

エクセルで文字列の一部を抽出するには、取り出したい場所によって関数を使い分けます。決まった位置なら LEFT・RIGHT・MID、「@」や「-」などの区切りの前後なら TEXTBEFORE・TEXTAFTER(または FIND との組み合わせ)、区切りでまとめて分けるなら TEXTSPLIT、関数を使わずにまとめて取り出すならフラッシュフィル(Ctrl+E)です。

文字列の切り出し・抜き出しも、同じ関数でできます。特定の文字以降を抽出するなら =TEXTAFTER(A2,"@")、特定の文字より前なら =TEXTBEFORE(A2,"@") です。

この記事では、目的別の早見表と、実際の Excel の画面で、それぞれの取り出し方を説明します。くわしい使い方は、各関数の記事へのリンクから確かめられます。

練習用Excelファイル(無料ダウンロード)
「位置で取り出す」「区切りで取り出す」「分割・住所」「フラッシュフィル」の4シートです。黄色のセルを書き換えて試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

目的別:文字列を抽出する方法の早見表

やりたいこと式(例)結果
左から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)
エクセルのLEFT関数・RIGHT関数・MID関数で商品コードの左右と真ん中を取り出した例
エクセルのLEFT関数・RIGHT関数・MID関数で商品コードの左右と真ん中を取り出した例

MID は「何文字目から・何文字」を指定します。試したところ、3件とも 4文字目からの4文字(1234・5678・9012)を取り出せました。くわしくは LEFT関数・RIGHT関数・MID関数の記事で説明しています。

特定の文字(「@」や「-」)の前・後ろ(以降)を抽出する(TEXTBEFORE・TEXTAFTER・FIND)

メールアドレスの「@」の前のように、文字数がそろっていない場合は、区切りの文字を目印にします。新しい Excel なら TEXTBEFORE・TEXTAFTER がいちばん簡単です。

=TEXTBEFORE(A2,"@")
エクセルのTEXTBEFORE関数・TEXTAFTER関数とLEFT・MID・FIND関数でメールアドレスの@の前後を取り出した例
エクセルのTEXTBEFORE関数・TEXTAFTER関数とLEFT・MID・FIND関数でメールアドレスの@の前後を取り出した例

古い 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関数)。

エクセルのTEXTSPLIT関数で氏名を姓と名に分けLEFT関数で住所から都道府県を取り出した例
エクセルのTEXTSPLIT関数で氏名を姓と名に分けLEFT関数で住所から都道府県を取り出した例

都道府県は、「神奈川県」「和歌山県」「鹿児島県」の3つだけが4文字です。そこで「4文字目が『県』なら4文字、それ以外は3文字」を LEFT で取り出します(②)。試したところ、東京都・神奈川県・北海道・和歌山県のどれも正しく取り出せました(③)。市区町村まで分ける方法は 住所を都道府県・市町村に分割を見てください。

関数を使わずに取り出す(フラッシュフィル)

1つ目のセル(B2)に、取り出したい結果「yamada」を手で入力し、その下のセル(B3)を選んで Ctrl+E を押します。Excel が規則を読み取って、残りのセルにも自動で入りました(①②)。状態バーには「フラッシュ フィルの変更されたセル: 4」と表示されます(③)。

エクセルのフラッシュフィル(Ctrl+E)でメールアドレスからユーザー名をまとめて取り出した例
エクセルのフラッシュフィル(Ctrl+E)でメールアドレスからユーザー名をまとめて取り出した例

フラッシュフィルは式ではなく値が入るので、元のデータを書き換えても結果は変わりません。元のデータが変わる表では関数を使います。

よくある間違い

症状考えられる原因対処
#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 です。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:文字列の抽出の関連記事

パターン(形)で文字を探したり取り出したりしたいときは、REGEX関数(正規表現)の使い方もあわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次