Использование VB в Excel.Как я могу вернуть наибольшее значение регулярного выражения из нескольких совпадений? - PullRequest
1 голос
/ 10 февраля 2012

Найден этот код регулярного выражения vb, который возвращает первое совпадение с регулярным выражением.

Я изменил .global = true.Теперь, как мне заставить функцию возвращать самое высокое значение числового совпадения, а не первое совпадение?

спасибо

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Чтобы получить числовое совпадение с наивысшим значением, вам нужно будет просмотреть коллекцию совпадений, предложенную 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
1 голос
/ 10 февраля 2012

Я не уверен, что вы подразумеваете под наибольшим значением, но если вы возвращаете числовые значения, просто создайте переменную 'max' и просматривайте совпадения, проверяя предыдущее с новым, чтобы выяснить, что больше ( старый способ получения MAX из списка значений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...