【Excel】特定の文字の後ろの文字を取り出す方法|TEXTAFTERで簡単

Excel

はじめに

Excelで次のような文字列があるとします。

abc¥こんにちはxyz

この中から取り出したいのは、

こんにちは

だけ!

つまり、

  • の後ろから
  • 後ろの余計な文字(xyz)を除いた
  • 真ん中の文字列だけを取り出したい

というケースです。


完成形(最新のExcel)

=TEXTBEFORE(TEXTAFTER(A1,"¥"),"xyz")

実際の例

A1セル

abc¥こんにちはxyz

結果

こんにちは
ハク
ハク

の後ろだけ取りたいのに、最後の xyz はいらないんだよね……

セル
セル

そんなときは、まず TEXTAFTER の後ろを取り出して、そのあと TEXTBEFORExyz の前までを取得すればいいわよ。

ハク
ハク

なるほど! 2つの関数を組み合わせるだけなんだ!


関数の仕組み

TEXTAFTER(A1,"¥")

こんにちはxyz

TEXTBEFORE(...,"xyz")

こんにちは

イメージ図

abc ¥ こんにちは xyz
↑-----------↑
ここを取得

末尾の文字数が毎回変わる場合は?

例えば、

abc¥こんにちは123
abc¥こんにちは_test
abc¥こんにちはAAA

のように後ろの文字が変わる場合は、

「どこまでが必要か」という目印が必要です。


もし最後にも ¥ があるなら

abc¥こんにちは¥zzz

この場合は、

=TEXTBEFORE(TEXTAFTER(A1,"¥"),"¥")

でOK!


古いExcelでも使える方法

=MID(A1,FIND("¥",A1)+1,FIND("xyz",A1)-FIND("¥",A1)-1)

MID関数の基本

=MID(文字列, 開始位置, 文字数)

例えば、

=MID("こんにちは",2,3)

とすると、

んにち

が返ります。


① 開始位置を求める

FIND("¥",A1)+1

FIND("¥",A1) の結果

4

は4文字目)

+1 する理由

の次の文字から取りたいから。

5

つまり、

5文字目の「こ」から開始


② 終わりの位置を求める

FIND("xyz",A1)

結果:

10

③ 何文字取るか計算

FIND("xyz",A1)-FIND("¥",A1)-1

つまり、

10 - 4 - 1 = 5

5文字取り出せば、

こんにちは

になる。


④ MIDに当てはめる

=MID(A1,5,5)

結果:

こんにちは

イメージ図

abc ¥ こ ん に ち は xyz
123456789...
↑---------↑
開始位置 5文字分

まとめると

項目数式意味
開始位置FIND("¥",A1)+1 の次から
文字数FIND("xyz",A1)-FIND("¥",A1)-1xyz の直前まで
抽出MID(...)必要な部分を取り出す

実務での活用例

この方法は次のような場面で使えます。

  • ファイル名の一部抽出
  • 商品コードの分解
  • ログデータの加工
  • システムから出力された文字列の整形

まとめ

最後にも がある場合

=TEXTBEFORE(TEXTAFTER(A1,"¥"),"¥")

後ろに xyz のような固定文字がある場合

=TEXTBEFORE(TEXTAFTER(A1,"¥"),"xyz")

古いExcelでも、次の数式で文字列の一部を取り出せます。

=MID(A1,FIND("¥",A1)+1,FIND("xyz",A1)-FIND("¥",A1)-1)
セル
セル

ポイントは『どこから始めて、どこで終わるか』を決めること。Excelの文字列処理は、考え方が分かればとても便利だよ。

ハク
ハク

これ、実務でもかなり使えそう!

こちらで抜き出すことはできますが、最近は区切りで抜き出すことが私は多いです。

区切りで文字の抜き出す方法はこちら

コメント

タイトルとURLをコピーしました