Found this vb regex code online which returns the first regex match.在Excel中使用VB。如何从多个匹配中返回最高值的正则表达式匹配?
我改变了.global = true。现在我该如何获得函数来返回最高值的数字匹配而不是第一次匹配?
感谢
Found this vb regex code online which returns the first regex match.在Excel中使用VB。如何从多个匹配中返回最高值的正则表达式匹配?
我改变了.global = true。现在我该如何获得函数来返回最高值的数字匹配而不是第一次匹配?
感谢
要获得最高值的数字匹配,您必须遍历Issun建议找到的匹配集合。试试这个
久经考验
Sub Sample()
Dim strgToTest As String
Dim hVal As Long
strgToTest = "1 2 3 44 55 66 77 a b c 5 6 88"
Set re = New RegExp
re.Pattern = "\b[0-9]+\b"
re.Global = True
Set Matches = re.Execute(strgToTest)
If Matches.Count > 0 Then
For Each Match In Matches
If Val(Match.Value) > hVal Then hVal = Val(Match.Value)
Next
MsgBox hVal
Else
MsgBox "No Match Found"
End If
End Sub
我不知道你的价值最高的意思,但如果你是找回数值,只需创建通过匹配的“最大”的变量和循环,检查先前与新找出哪个更大(从值列表中获得MAX的旧时尚方式)。
+1“老时尚之路”是唯一的出路据我所知:) – 2012-02-10 03:44:18
还有那些做更慢,也更复杂(如创建一个数组和运行worksheetfunction.max就可以了):p – aevanko 2012-02-10 04:27:54
是的,但我称之为工程:P – 2012-02-10 04:28:58