Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Joel,
When....: ParseChar : "-" : String String1 : "'Summary 3-22-2007 " : Variant/String (note space 2007 ") String2 : "'Summary 3-22-2007 " : Variant/String (note space 2007 ") .... the following Loop does not terminate: Do While Mid(String1, CharCount, 1) < "'" CharCount = CharCount + 1 Loop EagleOne Joel wrote: I like these type problems Sub main() Dim StringA As String Dim StringB As String StringA = "+123456789+'Summary 2-22-2007'!H8+'Summary 3-22-2007 '!H22-A1+(144/6)*'Summary 4-22-2007'!H23-B1+9876" StringB = "" Call Parse("+", StringA, StringB) StringA = StringB Call Parse("+", StringA, StringB) StringA = StringB Call Parse("-", StringA, StringB) StringA = StringB Call Parse("+", StringA, StringB) StringA = StringB Call Parse("*", StringA, StringB) StringA = StringB Call Parse("-", StringA, StringB) StringA = StringB Call Parse("+", StringA, StringB) End Sub Sub Parse(ParseChar As String, ByRef String1, ByRef String2) If StrComp(Left(String1, 1), ParseChar) = 0 Then String1 = Mid(String1, 2) End If CharCount = 1 Do While StrComp(Mid(String1, CharCount, 1), ParseChar) < 0 If StrComp(Mid(String1, CharCount, 1), "'") = 0 Then CharCount = CharCount + 1 Do While Mid(String1, CharCount, 1) < "'" CharCount = CharCount + 1 Loop End If CharCount = CharCount + 1 Loop String2 = Mid(String1, CharCount + 1) String1 = Left(String1, CharCount - 1) End Sub " wrote: Thanks for the time. The dashes in dates are not being skipped but intentionally avoided by skipping over anything between " ' " and " '! ". Frankly it is a VBA issue if one has to program this parsing challenge, in VBA. Joel wrote: This isn't a VBA problem, it is a linear algebra problem with no real answer. To get a unique answer your grammar must be defined better. Dashes are in dates and are being skipped because of the single quotes. Rules like these need to be defined. 2003/2007 Trying to consistently parse formula strings (Delimiter = any Opr sign) into i.e. OprSigns = Array("+", "-", "*", "/", "^", "", "<", "<", "=", "<=") FormulaStr = "+123456789+'Summary 2-22-2007'!H8+'Summary 3-22-2007 '!H22- _ A1+(144/6)*'Summary 4-22-2007'!H23-B1+9876" All formulas will begin (stuffed) with "+" sign if not already a "-" [if this makes parsing easier] Goal: Operator Parsed(1) = 123456789 + Parsed(2) = 'Summary 2-22-2007'!H8 + Parsed(3) = 'Summary 3-22-2007'!H22 - Parsed(4) = A1 + Parsed(5) = (144/6) * Parsed(6) = Summary 4-22-2007'H23 - Parsed(7) = B1 + Parsed(8) = 9876 end of FormulaStr It is important to isolate, for later retrieval, each operator AFTER each Parsed(x) Attempted (looooose VBA) Split(FormulaStr, OprSigns,1,1) Another challenge, avoiding sign-look-a-like characters between each " ' " followed by " ' ! " or in the Path to other workbooks (still within " ' " followed by " ' ! " I believe) Eg., would be the "-" in dates like above. The approach I tried was to avoid parsing between " ' " followed by " ' ! " as Gap(1), Gap(2), etc. I can get very close but I need someone with much better VBA skills to get the gold ring. Thanks for any thoughts, approaches or cuss words. EagleOne |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Parse A String into Two | Excel Worksheet Functions | |||
Parse delimiter is change from text to numbers | Excel Discussion (Misc queries) | |||
Sum / count data from text string with delimiter | Excel Worksheet Functions | |||
Parse this string | Excel Discussion (Misc queries) | |||
Parse string | Excel Programming |