Excel 特定の文字列以前・以降・間の文字を抽出する方法
Excelでは関数のみで特定の文字列をキーに文字列を抽出することが可能です。
ここの記事ではその方法を紹介します。
抽出する手順
特定の文字列以前
LEFT関数とFIND関数を利用し、下記の数式を入力します。
=LEFT(抽出元の文字列,FIND(キーとなる文字列, 抽出元の文字列)-1)
先頭の文字をキーとした場合は空白、該当しない場合は#VALUEエラーになります。
TEXTBEFOREを利用する場合
2022年9月に追加されたTEXTBEFORE関数を利用すると簡潔な数式で実現可能です。
=TEXTBEFORE(抽出元の文字列,キーとなる文字列)
特定の文字列以降
RIGHT関数とFIND関数を利用し、下記の数式を入力します。
=RIGHT(抽出元の文字列,LEN(抽出元の文字列)-FIND(キーとなる文字列,抽出元の文字列)-LEN(キーとなる文字列)+1)
TEXTAFTERを利用する場合
2022年9月に追加されたTEXTAFTER関数を利用すると簡潔な数式で実現可能です。
=TEXTAFTER(抽出元の文字列,キーとなる文字列)
〇〇と△△の間
MID関数とFIND関数、LEN関数を利用し、下記の数式を入力します。
=MID(抽出元の文字列, FIND(前:キーとなる文字列,抽出元の文字列)+LEN(前:キーとなる文字列), FIND(後:キーとなる文字列,抽出元の文字列)-FIND(前:キーとなる文字列,抽出元の文字列)-LEN(前:キーとなる文字列))
TEXTBEFOREとTEXTAFTERを利用する場合
2022年9月に追加されたTEXTBEFORE関数と
TEXTAFTER関数を利用すると簡潔な数式で実現可能です。
=TEXTAFTER(TEXTBEFORE(抽出元の文字列,後:キーとなる文字列),前:キーとなる文字列)
数式の効率化(LET関数が使える場合)
2020年10月頃にMicrosoft(Office)365で追加された新機能のLET関数を利用すれば
FIND関数とLEN関数の重複なしに数式を組むことが可能です。
(TEXTBEFORE関数とTEXTAFTER関数を利用する場合は元々簡潔なため、メリットがありません)
LET関数は一定の数式に任意の名前を付けて再利用可能にする関数です。
(マクロやプログラミングの変数のようなもの)
今回の数式例です。
重複している1回目と3回目のFIND関数を前文字の開始位置という名前に置き換え、
LEN関数を前文字数という名前に置き換えています。
=LET( 前文字の開始位置,FIND(C3,B3), 前文字数,LEN(C3), MID(B3,前文字の開始位置+前文字数,FIND(D3,B3)-前文字の開始位置-前文字数) )
これにより以下のようなメリットがあります。
- 数式の重複(冗長)がなくなり、数式の変更が簡単になる
- 意味のある名前を付けられるため数式の意図を把握しやすくなる(ただしLET関数を知っている必要あり)
- 数式の実行回数が減るのでExcelの計算が早くなる(今回の例ではFIND関数が4回→3回)
FIND関数やLEN関数は対象の文字数が長くなると重さを増してくる関数です。
数式を使うセルが多い場合は特に効果が大きいでしょう。
重複だけでなく意味のある数式の固まりに名前を付ける手もあります。
数式自体は長くなりますが、何を意図した数式なのか構造は読みやすくなります。
(LET関数や変数に慣れているかという個人差の要素はあります)
=LET( 前文字の開始位置,FIND(C3,B3), 前文字数,LEN(C3), 切り出しの開始位置,前文字の開始位置+前文字数, 切り出しの終了位置,FIND(D3,B3)-前文字の開始位置-前文字数, MID(B3,切り出しの開始位置,切り出しの終了位置) )
Excelを効率的に習得したい方へ
当サイトの情報を電子書籍用に読み易く整理したコンテンツを
買い切り950円またはKindle Unlimited (読み放題) で提供中です。
Word-A4サイズ:1,400ページの情報量で
(実際のページ数はデバイスで変わります)
基本的な使い方、関数の解説(140種類)、
頻出テクニックと実用例(109種類)、
XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピルなど便利な新機能を紹介。
体系的に学びたい方は是非ご検討ください。
アップデートなどの更新事項があれば随時反映しています。
なお購入後に最新版をダウンロードするには
Amazonへの問い合わせが必要です。