Excel 文字列から特定の文字列を抜きだす。抽出するセル関数。メモ。記号より前・後を抜き出す~等。

文字列の「初め」に現れる半角スペースより「後の文字列」を抽出
=MID(A1, FIND(” “, A1) + 1, LEN(A1))

文字列の「最後」に現れる半角スペースより「前の文字列」を抽出。
=LEFT(A1, FIND(“#”, SUBSTITUTE(A1, ” “, “#”, LEN(A1) – LEN(SUBSTITUTE(A1, ” “, “”)))) – 1)

「特定の記号や文字列」より「前」の文字列を抽出。
=IFERROR(LEFT(A1, FIND(“★”, A1) – 1), A1)

目次

文字列の「最初の半角スペース」より「後の文字列」を抽出したい。

関数で得られる結果

文字列の「初め」に現れる半角スペースより「後の文字列」を抽出

A列結果
Intel Xeon W 11865MRE 2.60GHzXeon W 11865MRE 2.60GHz
Intel Xeon W 1270E 3.40GHzXeon W 1270E 3.40GHz
Xeon W 11555MRE 2.60GHzW 11555MRE 2.60GHz
Core i7 10700E 2.90GHzi7 10700E 2.90GHz
Intel Core i9 10900TE 1.80GHzCore i9 10900TE 1.80GHz

関数

=MID(A1, FIND(" ", A1) + 1, LEN(A1))

解説

  1. FIND(" ", A1)
    • A1 内の 最初の半角スペースの位置 を取得。
  2. MID(A1, FIND(" ", A1) + 1, LEN(A1))
    • FIND で取得した位置 +1 から文字列を抽出(半角スペースの直後から開始)。

文字列の最後の「/」より後ろの文字列を抽出。URL処理などに。

関数で得られる結果

文字列の「一番最後」の記号(例では「スラッシュ:/」)より「後の文字列」を抜き出します。

サンプルテキストでの置換例:

A列結果
https://www.test.com/files/d/33008.html33008.html
https://www.example.com/docs/sample_file.pdfsample_file.pdf
https://www.testsite.com/images/pic123.jpgpic123.jpg

使用例:URLやパスから最後の「/」以降のファイル名やパスを抽出。

関数

=RIGHT(A1,LEN(A1)-FIND("~",SUBSTITUTE(A1,"/","~",LEN(A1)-LEN(SUBSTITUTE(A1,"/","")))))

解説:

  1. SUBSTITUTE(A1,"/","~",LEN(A1)-LEN(SUBSTITUTE(A1,"/","")))
    → 文字列内で最後の「/」を「~」に置き換えます。
  2. FIND("~", ...)
    → 置き換えた「~」の位置を探す。
  3. LEN(A1) - FIND("~", ...)
    → 文字列の長さから最後の「/」の位置を引いた値を使って、最後の「/」より後ろの文字数を求める。
  4. RIGHT(A1, ...)
    → 最後の「/」以降の文字列を抽出。

文字列の「最後」に現れる半角スペースより「前の文字列」を抽出。

関数で得られる結果

A列の文字列の、最後の空白(半角スペース)より前の文字列を抜き出す

A列結果
Intel Xeon W 11865MRE 2.60GHzIntel Xeon W 11865MRE
Intel Xeon W 1270E 3.40GHzIntel Xeon W 1270E
Intel Xeon W 11555MRE テストCPUIntel Xeon W 11555MRE
Intel Core i7 10700EIntel Core i7
Intel Core i9 10900TE 1.80GHzIntel Core i9 10900TE

関数

=LEFT(A1, FIND("#", SUBSTITUTE(A1, " ", "#", LEN(A1) - LEN(SUBSTITUTE(A1, " ", "")))) - 1)

解説

  1. LEN(A1) - LEN(SUBSTITUTE(A1, " ", ""))
    • A1 内の スペースの数 を取得する。
  2. SUBSTITUTE(A1, " ", "#", LEN(A1) - LEN(SUBSTITUTE(A1, " ", "")))
    • 最後の半角スペースを # に置換 する。
  3. FIND("#", ...) - 1
    • # の位置を取得し、その前の文字列を LEFT で抽出。

「特定の記号や文字列」より「前」の文字列を抽出したい。

例:文字列に「★」が含まれる場合、「★」より前の文字列を抽出する。
「★」は、記号だけでなく「CPU」や「支店」など文字列に変更可能。

例:
Intel Xeon W 11865MRE★2.60GHz → 「★」より前 → 「Intel Xeon W 11865MRE」
日本東京支店 営業部 →「支店」より前を抽出 → 日本東京

サンプルデータと関数・結果

」より前の文字列を抽出

=IFERROR(LEFT(A1, FIND("★", A1) - 1), A1)
A列結果
Intel Xeon W 11865MRE★2.60GHzIntel Xeon W 11865MRE
AMD Ryzen 7 5800X★3.80GHzAMD Ryzen 7 5800X
Apple M2 Max 12-Core GPU★10CApple M2 Max 12-Core GPU
Snapdragon 8 Gen 2Snapdragon 8 Gen 2 (変化なし)

「支店」より前の文字列を抽出

=IFERROR(LEFT(A1, FIND("支店", A1) - 1), A1)
A列結果
日本 東京支店 〇〇部日本 東京
アメリカ NY支店 〇〇部アメリカ NY
日本 大阪 梅田支店日本 大阪 梅田
北海道 札幌 すすきの 営業部北海道 札幌 すすきの 営業部 (変化なし)

解説

  1. FIND("★", A1)
    • A1 内の「★」の位置を取得。
  2. LEFT(A1, FIND("★", A1) - 1)
    • 「★」の 前の文字列 を抽出。
  3. IFERROR(..., A1)
    • 「★」がない場合、そのまま A1 の値を返す。

ポイント

「特定の文字列」が含まれる場合、前の部分だけ抽出して取得
特定の文字列」がない場合はそのまま返す。

記事について

当サイトは、主に自分用の備忘録として情報をまとめています。個別の質問にはお答えできません。
紹介するコードや設定をご参考の際は、ご自身の責任においてご利用ください。編集や実行によるいかなる損害・不具合についても、当サイトは責任を負いかねます。
必ず事前にバックアップを取り、安全に作業を行ってください。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次