Home |
Search |
Today's Posts |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Myrna Larson wrote...
I just re-read his original message, where he gives the example (f450). The formula won't handle that -- it requires a space at the end of the number. *Your* formula. Mine handles anything matching the regexp 'f\d+'. The point is that numeric substrings are well defined - they end with the rightmost numeral. Whatever follows, if anything, is irrelevant. Only the transition matters. Therefore, it's sufficient to find all numerals following the 'f' rather than finding anything in particular after the rightmost numeral. I think the macro handles all possibilities, however. Your udf does check for 'f' followed by a numeral, so I was wrong about it picking up substrings beginning with 'f' followed by hyphens, commas or periods, but it does include trailing punctuation, so it could pick up trailing hyphens, commans and periods that would prevent the substring from being converted to a number. For example, in both 123 My Street, Wherever f999.. whatever 123 My Street, Wherever .f9.9. whatever your udf chokes on the CDbl call. If you want to avoid regular expressions, you could build the state machine into your subsequent character test. Function gnaf(s As String) As Variant Dim p As Long, q As Long, vc As String, c As String * 1 gnaf = CVErr(xlErrValue) vc = ".0123456789,-" Do p = InStr(p + 1, s, "f") If p = 0 Then Exit Do If Mid(s, p, 2) Like "f#" Then p = p + 1 q = p + 1 Do While q <= Len(s) c = Mid(s, q, 1) If InStr(1, vc, c) = 0 Then Exit Do 'inner Do q = q + 1 If c = "-" Then Exit Do 'inner Do ElseIf c = "." Then vc = Mid(vc, 2) End If Loop gnaf = CDbl(Mid(s, p, q - p)) Exit Function End If Loop End Function |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Parse A String into Two | Excel Worksheet Functions | |||
Parse this string | Excel Discussion (Misc queries) | |||
How to parse a string with a date? | Excel Worksheet Functions | |||
Q: parse string | Excel Discussion (Misc queries) | |||
String Parse | Excel Programming |