F048 特定の文字列が最後に表示された位置を右端からの文字数で抽出する関数

2019-06-01
EXCEL自作関数

 検索文字が文字列中で最後に表示された位置を右からの文字数で調べる関数 です。
 RIGHT関数と組み合わせて最終で表示された特定の文字行こうの文字を抽出したい場合などに便利です。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法 

登録されたら、シート上からユーザー関数「 FindF 」が使用できます。
使い方は 
ワークシート上で = FindF(検索文字,文字列) の関数として使用することで、 特定の文字列からより後の指定した文字数の文字を抽出できます。

【例】
FindF(検索文字,文字列)
FindF(“秋田県秋田市1-1秋田歯科医院”,”秋田”)→ 6
最後に表示させた秋田の右からの位置なので6

Function FindF(S1 As String, S2 As String)
’ 検索文字が文字列中で最後に表示された位置を右からの文字数で調べる関数
’ FindF(検索文字,文字列)
’ FindF(“秋田県秋田市1-1秋田歯科医院”,”秋田”)→ 6
’ 最後に表示させた秋田の右からの位置なので6
Dim i As Long
Dim C As Long
Dim CW As Long
Dim N As Long
Dim A As String
On Error GoTo EXITFUN
A = S2
N = (LenB(S2) – LenB(Replace(S2, S1, “”))) / LenB(S1)
If N = 0 Then
  GoTo EXITFUN
End If
C = 0
For i = 1 To N
 If InStr(A, S1) > 0 Then
  C = C + InStr(A, S1)
  A = Mid(A, InStr(A, S1) + 1)
 Else
  GoTo EXITFUN
 End If
Next
FindF = Len(S2) – C + 1
Exit Function
EXITFUN:
FindF = CVErr(xlErrValue)
End Function

ここで紹介したコード使用による損害に対しては一切責任は負えません。