Excel自作 VBA 関数
文字列中の特定の文字を新しい文字列に置き換えするSUBSTITUTE関数を文字列の後ろから行えるようにした関数です。
この関数を使えば後ろから2番目の検索文字を新しい文字に置換することなどが可能です。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「 SUBSTITUTER」が使用できます。
使い方は
ワークシート上で = SUBSTITUTER(文字列,検索文字,置換文字, [置換位置]) の関数として使用することで、 SUBSTITUTE関数を文字列の後ろから行えるようにできます。
SUBSTITUTER(文字列,検索文字,置換文字, [置換位置])
SUBSTITUTE関数で後ろから〇番目の文字を置き換える関数
置換位置は後からの何番目の置換文字を置き換えるかを数値で指定します。省略すると一番後ろの文字が置換されます。
置換位置は後ろからの検索文字が現れた回数となります
[例]
SUBSTITUTER(“秋田県秋田市秋田町”,”秋田”,”栃木”,2)→”秋田県栃木市秋田町”
SUBSTITUTER(“秋田県秋田市秋田町”,”秋田”,”栃木”,1)→”秋田県秋田市栃木町”
SUBSTITUTER(“秋田県秋田市秋田町”,”秋田”,”栃木”)→”秋田県秋田市栃木町”
Function SUBSTITUTER(S1 As String, S2 As String, S3 As String, Optional N As Long = 1)
'SUBSTITUTE関数で後ろから〇番目の文字を置き換える関数
'SUBSTITUTER(文字列,検索文字,置換文字, [置換位置])
'置換位置は後からの何番目の置換文字を置き換えるかを数値で指定します。
'省略すると一番後ろの文字が置換されます。
'SUBSTITUTER("秋田県秋田市秋田町","秋田","栃木",2)→"秋田県栃木市秋田町"
'SUBSTITUTER("秋田県秋田市秋田町","秋田","栃木",1)→"秋田県秋田市栃木町"
'SUBSTITUTER("秋田県秋田市秋田町","秋田","栃木")→"秋田県秋田市栃木町"
Dim i As Long
Dim C As Long
Dim CW As Long
Dim A As String
On Error GoTo EXITFUN
A = S1
CW = (LenB(S1) - LenB(Replace(S1, S2, ""))) / LenB(S2)
C = 0
If N = 0 Or N > CW Then
GoTo EXITFUN
Else
N = CW + 1 - N
End If
For i = 1 To N
If InStr(A, S2) > 0 Then
C = C + InStr(A, S2)
A = Mid(A, InStr(A, S2) + 1)
Else
GoTo EXITFUN
End If
Next
SUBSTITUTER = C
SUBSTITUTER = Left(S1, C - 1) & Replace(S1, S2, S3, C, 1)
Exit Function
EXITFUN:
SUBSTITUTER = CVErr(xlErrValue)
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。