在VBA中,如何从右侧找到标点符号的第一个实例?例如,从“!”开始,我应该能够在以下字符串中获得两次“安全性”一词:
INDEX(Security![a range], MATCH(J2,Security![a range],0))
像InStrRev这样的东西是理想的,但似乎它不支持正则表达式。非常感谢任何帮助!
答案 0 :(得分:0)
InStrRev()
确实不接受RegEx
模式,但VBA确实支持RegEx
,并且有一种方法可以实现您的需求。但是,只需循环遍历每个字符并查找任何标点符号都非常简单,可能是您喜欢的路线。
下面的骨架代码(只有几个标点符号):
Public Sub RunMe()
Const punc As String = "!""*()-[]{};':@~,./<>?"
Debug.Print InStrRevAny("T:E'S!T", punc)
End Sub
Private Function InStrRevAny(refText As String, chars As String) As Long
Dim i As Long, j As Long
For i = Len(refText) To 1 Step -1
For j = 1 To Len(chars)
If Mid(refText, i, 1) = Mid(chars, j, 1) Then
InStrRevAny = i
Exit Function
End If
Next
Next
End Function