はじめに
Excelで次のような文字列があるとします。
abc¥こんにちはxyz
この中から取り出したいのは、
こんにちは
だけ!
つまり、
¥の後ろから- 後ろの余計な文字(
xyz)を除いた - 真ん中の文字列だけを取り出したい
というケースです。
完成形(最新のExcel)
=TEXTBEFORE(TEXTAFTER(A1,"¥"),"xyz")
実際の例
A1セル
abc¥こんにちはxyz
結果
こんにちは

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

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

ハク
なるほど! 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)-1 | xyz の直前まで |
| 抽出 | MID(...) | 必要な部分を取り出す |
実務での活用例
この方法は次のような場面で使えます。
- ファイル名の一部抽出
- 商品コードの分解
- ログデータの加工
- システムから出力された文字列の整形
まとめ
最後にも ¥ がある場合
=TEXTBEFORE(TEXTAFTER(A1,"¥"),"¥")
後ろに xyz のような固定文字がある場合
=TEXTBEFORE(TEXTAFTER(A1,"¥"),"xyz")
古いExcelでも、次の数式で文字列の一部を取り出せます。
=MID(A1,FIND("¥",A1)+1,FIND("xyz",A1)-FIND("¥",A1)-1)

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

ハク
これ、実務でもかなり使えそう!
こちらで抜き出すことはできますが、最近は区切りで抜き出すことが私は多いです。
区切りで文字の抜き出す方法はこちら



コメント