この記事では「特定のキーワードが文字列内で最後に出現する開始位置を求める計算式」を解説します。一番右、後ろ、最後のキーワードの位置の検索ですからFIND関数やSEARCH関数で処理することを発想されるかもしれません。
FIND関数やSEARCH関数での処理も可能ですが、メンテナンス性を考えるとExcelの新関数であるTEXTBEFORE関数を用いると多少ですが簡潔になります。
この関数を使うと、特定の区切り文字やキーワードの直前までのテキストを取得することができます。今回は、この関数を使って「検索対象文字列」内で「検索キーワード」が最後に出現する位置を簡単に見つける方法を紹介します。
事例の紹介
- 検索対象文字列:
32○▲□465○▲□6○▲□65
- 検索キーワード:
○▲□
この文字列において、○▲□
が最後に出現する位置を見つけたい場合、多くのExcelユーザーは複雑な関数を駆使するかもしれません。しかし、TEXTBEFORE関数と文字列の長さを数えるLEN関数を使用すれば、この問題を解決できます。
事例の解説・完成例
STEP 1: TEXTBEFORE関数の使用
TEXTBEFORE関数を使って、最後の○▲□
の前までの文字列を取得します。この関数の第三引数に-1
を設定することで、指定した区切り文字・キーワードが最後に出現する部分までのテキストを抽出できます。
=TEXTBEFORE("32○▲□465○▲□6○▲□65", "○▲□", -1)
この関数は 32○▲□465○▲□6
を返します。
STEP 2: 最後のキーワードの開始位置を計算
取得したテキストの長さをLEN関数で計算し、1を加えることで、最後の○▲□
の開始位置を求めます。
=LEN(TEXTBEFORE("32○▲□465○▲□6○▲□65", "○▲□", -1)) + 1
この式は 13 を返します。これは、○▲□ が最後に出現する位置、つまり左から13文字目にあることを意味します。
まとめると、特定のキーワードが文字列内で最後に出現する開始位置を求める計算式は以下のものとなります。
=LEN(TEXTBEFORE(検索対象文字列, 検索キーワード, -1)) + 1
計算式の論理・構造の解説
式の全体構造
計算式
=LEN(TEXTBEFORE(検索対象文字列, 検索キーワード, -1)) + 1
は、特定のキーワードが文字列内で最後に出現する開始位置を求めるために使用されます。
STEP 1: TEXTBEFORE 関数によるテキストの抽出
TEXTBEFORE関数は、指定されたキーワードが最後に出現する前のすべてのテキストを抽出します。この関数は、第三引数に -1
を設定することで、検索キーワードが最後に現れる箇所の直前までの文字列を取得します。
=TEXTBEFORE(検索対象文字列, 検索キーワード, -1)
この関数により返される値は、検索キーワードの最後の出現直前までのテキストです。このテキストの長さは、キーワードが最後に出現する直前の文字数に相当します。
STEP 2: 抽出されたテキストの長さの計測
LEN関数を使用して、TEXTBEFORE関数によって抽出されたテキストの長さを計測します。この長さは、キーワードが最後に出現する直前までの文字列の長さです。
=LEN(TEXTBEFORE(検索対象文字列, 検索キーワード, -1))
STEP 3: 最後のキーワードの開始位置の特定
最後のキーワードが開始する位置を特定するために、抽出されたテキストの長さに 1
を加算します。これは、TEXTBEFORE関数で得られるテキストがキーワードの直前で終わるため、その次の文字がキーワードの開始位置となるためです。
+ 1
結論と結果
これらの論理を組み合わせ、特定のキーワードが文字列内で最後に出現する開始位置を求める計算式として以下のものが導き出されます。
=LEN(TEXTBEFORE(検索対象文字列, 検索キーワード, -1)) + 1
この計算により、検索キーワードが文字列内で最後に出現する開始位置が求められます。例えば、"32○▲□465○▲□6○▲□65"
の場合、この計算式は最後の ○▲□
の開始位置を返します。
例えば、検索対象文字列がB1、検索キーワードがB2へ入力されている場合の式は以下の通りです。
=LEN(TEXTBEFORE(B1,B2,-1)) + 1
コメント