Modify code in UDF
That does it!
Thanks, Bob.
Biff
"Bob Phillips" wrote in message
...
Hi Biff,
A third alternative
Public RE As RegExp
Function LastGroupOfNumbers(s)
'// Microsoft VBScript Regular Expressions 5.5
Dim Matches As MatchCollection
Const k As String = "(\d+\.\d+|\d+|\.\d+)\D*$"
If RE Is Nothing Then Set RE = New RegExp
With RE
.IgnoreCase = True
.Global = True
.Pattern = k
If .Test(s) Then
Set Matches = .Execute(s)
LastGroupOfNumbers = Matches(0).SubMatches(0)
End If
End With
End Function
Bob
"Biff" wrote in message
...
Hi Bob!
Very close but with a little hitch...
If the number string is ONLY a decimal:
11xxx10.5xx = 10.5
11xxxxx.5xx = 5
Biff
"Bob Phillips" wrote in message
...
Public RE As RegExp
Function LastGroupOfNumbers(s)
'// Microsoft VBScript Regular Expressions 5.5
Dim Matches As MatchCollection
Const k As String = "(\d+\.\d+|\d+)\D*$"
If RE Is Nothing Then Set RE = New RegExp
With RE
.IgnoreCase = True
.Global = True
.Pattern = k
If .Test(s) Then
Set Matches = .Execute(s)
LastGroupOfNumbers = Matches(0).SubMatches(0)
End If
End With
End Function
--
HTH
RP
(remove nothere from the email address if mailing direct)
"Biff" wrote in message
...
Hi Folks!
I was following a thread awhile back in which Dana DeLouis posted this
UDF
that returns the last string of numbers contained inside a string:
11xxx1xx10 = 10
aa22xxxxxx = 22
2xxxxxxxxx = 2
xx12xxx5xx = 5
This works beautifully when the "numbers" are integers.
Can this code be modified to return the number string if it also
contains
decimals?
As is, it won't:
11xxx10.1 = 1
xxx5.25xx = 25
Where the above should return:
10.1
5.25
Here's the code:
Option Explicit
Public RE As RegExp
Function LastGroupOfNumbers(s)
'// Microsoft VBScript Regular Expressions 5.5
Dim Matches As MatchCollection
Const k As String = "(\d+)\D*$"
If RE Is Nothing Then Set RE = New RegExp
With RE
.IgnoreCase = True
.Global = True
.Pattern = k
If .Test(s) Then
Set Matches = .Execute(s)
LastGroupOfNumbers = Matches(0).SubMatches(0)
End If
End With
End Function
Thanks
Biff
|