FIND関数では抽出するのが難しい、 文字列内に2つ以上含まれる文字の2回目以降の位置を調べることができます。
この関数では表示された回数も指定して文字数内の位置を抽出できます 。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「 FindN」が使用できます。
使い方は
ワークシート上で = FindN(検索文字,文字列,[文字が表示された回数]) の関数として使用することで、 特定の文字列からより後の指定した文字数の文字を抽出できます。
【例】
FindN(検索文字,文字列,[文字が表示された回数])
FindN(“秋田県秋田市新屋”,”秋田”,2)→ 4
2回目の秋田が表示表示される位置なので4
Function FindN(S1 As String, S2 As String, Optional N As Long = 1)
’ FindN(検索文字,文字列,[文字が表示された回数])
’ FindN(“秋田県秋田市新屋”,”秋田”,2)→ 4
’ 2回目の秋田が表示表示される位置なので4
Dim i As Long
Dim C As Long
Dim CW As Long
Dim A As String
On Error GoTo EXITFUN
A = S2
CW = (LenB(S2)- LenB(Replace(S2, S1, “”))) / LenB(S1)
C = 0
If N > CW Then
GoTo EXITFUN
End If
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
FindN = C
Exit Function
EXITFUN:
FindN = CVErr(xlErrValue)
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。