Excel FIND関数で右(後ろ)からN文字目を取得する方法

2020年5月16日

FIND関数FINDB関数は指定した文字がどこにあるかを

開始位置(左・前)からの位置で取得します。

逆に終了位置(右・後)からの位置を取得する関数やオプション、

文字を反転させる関数もないので複数の関数を組み合わせる必要があります。

この記事ではFIND関数で紹介しますが、FINDB関数でも同様です。

方法

数式の組み合わせ

Yahoo!天気の東京都のURLの最後の/を取得する例で考えます。

https://weather.yahoo.co.jp/weather/jp/13/?day=1

取得する数式

右からの位置の検索結果

SUBSTITUTE関数LEN関数を併用で実現できます。(文字色ありは可変な部分)

=FIND(処理用文字,SUBSTITUTE(対象,検索文字列,処理用文字,LEN(対象)-LEN(SUBSTITUTE(対象,検索文字列,""))-(右からN文字目-1)))

可変部分は今回の例ではこのように設定します。

可変部分
処理用文字
対象https://weather.yahoo.co.jp/weather/jp/13/?day=1
検索文字列/

処理用文字はなんでも構いませんが、

対象中になく処理用文字とも異なる文字である必要があります。

この結果とLEFT関数を組み合わせれば最後の/までのURLが取得されます。

https://weather.yahoo.co.jp/weather/jp/13/

右からN文字目の数字を変えるとより左の位置で検索します。

例えば3にすると右から3番目となりLEFT関数の結果がこうなります。

https://weather.yahoo.co.jp/weather/
右から3文字目の対象を取得

数式の詳細説明

どのような動きをしているかを順を追って説明します。

結果さえ取れれば良いという方は読み飛ばしてくださって構いません。

まずLEN関数対象の文字数を取得します。

セル項目名数式
H3対象の文字数=LEN(対象)
LEN関数で対象全体の文字数を取得

SUBSTITUTE関数で対象から検索文字列を全削除します。

今回の例ではこのような結果となります。

セル項目名数式
I3対象から検索文字列を除外した文字列=SUBSTITUTE(対象,検索文字列,"")
https:weather.yahoo.co.jpweatherjp13?day=1
SUBSTITUTE関数で対象から検索文字列を全削除

LEN関数対象から検索文字列を除外した文字数を取得します。

セル項目名数式
J3対象から検索文字列を除外した文字数=LEN(対象から検索文字列を除外した文字列)
LEN関数で検索文字列を削除した対象文字数を取得

先ほどの二つの文字数の差を算出し、検索文字列を求めます。

検索文字列の数=対象の文字数-対象から検索文字列を除外した文字数
セル項目名数式
K3検索文字列の数対象の文字数対象から検索文字列を除外した文字数
N文字目の対象の数を算出

それを右からN文字目から1を引いた数を引きます。

セル項目名数式
L3N文字目の検索文字列検索文字列の数-(右からN文字目-1)

()は計算上不要なのですが見た目上、

一まとまりにするために入れているだけです。

N文字目の対象を算出

SUBSTITUTE関数でN文字目の対象を処理用文字に置換します。

セル項目名数式
M3N文字目の検索文字列処理用文字に置換した対象SUBSTITUTE(対象,検索文字列,処理用文字,N文字目の検索文字列)
SUBSTITUTEでN文字目を検索文字列を処理用文字に置換

置換した文字列から処理用文字の位置を、

FIND関数で出せば右からN文字目の検索となります。

セル項目名数式
N3右からN文字目検索文字列の位置=FIND(処理用文字,右からN文字目の検索文字列処理用文字に置換した対象)
検索結果

処理用文字対象中に別途含まれている場合、

FIND関数がそちらに反応する場合があるので

処理用文字は対象に存在しない文字である必要があります。

マクロ・VBA

数式を組み合わせるより、少ない手間と簡潔な記述で実現可能です。

関連記事

FIND関数の使い方・活用方法の記事一覧