From: Jim Berglund on
Terrific! I think I am starting to understand what's been done. This is
really powerful stuff.

Is it possible to imbed the code in the program or does it have to be called
in as a macro each time?

I'll work it through again...

OK, I tried a number of variations, without success - even just copying data
into another spreadsheet and trying it.

Here is some of the actual data...

AAINEY J 1193 STRATHCONA DR SW CALGARY, AB T3H4S1 (403) 293-2671
(403) 293-2671
ABEN CONRAD 14 140 STRATHAVEN CI SW CALGARY, AB T3H2N5 (403) 249-1396
(403) 249-1396
ADAMS-CATHERWOOD T 71 STRATTON HILL RI SW CALGARY, AB T3H1W8 (403) 685-9699
(403) 685-9699
ADAMSON BRYCE P 330 555 STRATHCONA BV SW CALGARY, AB T3H2Z9 (403) 242-2000
(403) 242-2000
AIUTO ANTONIO 511 STRATHCONA ME SW CALGARY, AB T3H1X1 (403) 240-2055
(403) 240-2055
ALBINATI M J 115 STRADWICK RI SW CALGARY, AB T3H1G7 (403) 242-1028
(403) 242-1028
ALEXANDER RONALD R 120 STRATHBURY CI SW CALGARY, AB T3H1P9 (403) 249-2801
(403) 249-2801
AL-JANABY I 35 39 STRATHLE CM SW CALGARY, AB T3H5P8 (403) 256-5690
(403) 256-5690
ALLEN JACK 66 STRATHLEA CR SW CALGARY, AB T3H5A8 (403) 249-8289
(403) 249-8289
AL-SAYED M 11 STRATHLEA CM SW CALGARY, AB T3H5C5 (403) 663-8689
(403) 663-8689
ALSHAWI A 124 STRATHCONA CL SW CALGARY, AB T3H1L3 (403) 685-4070
(403) 685-4070
AMOOZEGAR NEZAM 7001 STRATHRIDGE GA SW CALGARY, AB T3H4R9 (403) 686-1116
(403) 686-1116
ANDA RICHARD 69 STRATHRIDGE CR SW CALGARY, AB T3H3R9 (403) 217-4776
(403) 217-4776
ANDERSON D B 80 STRADBROOKE RI SW CALGARY, AB T3H1T9 (403) 686-0702
(403) 686-0702
ANDERSON J 24 STRATHDALE CL SW CALGARY, AB T3H2K3 (403) 685-1424
(403) 685-1424

Would you please take another try and tell me what needs to change? (I think
the difference may be the comma after CALGARY)

Thanks again, Ron.
Jim

"Ron Rosenfeld" <ronrosenfeld(a)nospam.org> wrote in message
news:ul7nv59mr7r28688hbscpphankmrilrbje(a)4ax.com...
> On Mon, 24 May 2010 22:27:18 -0600, "Jim Berglund" <jazzzbo(a)shaw.ca>
> wrote:
>
>>Ron. Thanks for the effort you put in on this. I would really like to
>>understand this more.
>>
>>Is it checking each row to see if it meets the pattern, and if so, doing
>>the
>>parsing and then building a new, 5-column list?
>
> Yes. And if your row does not meet the format, it will do nothing.
>
>
>>What is the following line for?
>> Set myRegExp = CreateObject("vbscript.regexp")
>
> That's called late binding, and it invokes another program which allows
> the use
> of Regular Expressions in VBA. Regular Expressions are a powerful method
> of
> manipulating strings.
>
>>
>>Also, could you please help me understand the following? I've never seen
>>any
>>code like it and I just don't have a clue how to interpret it...
>>
>>myRegExp.Pattern = "^(\D+)\s+(.*)\s(CALGARY|MELBOURNE|SYDNEY)" &
>>"\s+([A-Z]{2})\s+(\w+)\s+(\(\d{3}\)\s+\d{3}-\d{4})$"
>
> That is the pattern derived from the example you gave.
>
> Everything was on one line so:
>
> ^ Start at the beginning of the line
>
> (\D+) Capture everything that is not a digit into submatch 0. (In the
> definition, the first digit was the beginning of the address). This will
> be
> the name.
>
> \s+ matches the space(s) between the end of the non-digits and the next
> group.
>
> (.*) capture everything, into submatch 1, up to the next match. This will
> be the address.
>
> \s matches the space between the end of the address and the next group
>
> ((CALGARY|MELBOURNE|SYDNEY) Short list of valid city names. This will
> need
> to be extended to match your data. Capture into submatch 2.
>
> \s+ matches the space(s) between the end of the city name and the
> province.
>
> ([A-Z]{2}) capture the next two capital letter abbreviation as the
> Province into submatch 3
>
> the rest matches the postcode, and phone number, again, according to the
> pattern that was in the example you gave.
>
>
>
>>
>>I tried it and it ran without any errors. But it didn't do anything.
>
> It ran perfectly here using your line of sample data.
>
> You have to enter and run it properly.
>
> To enter this Macro (Sub), <alt-F11> opens the Visual Basic Editor.
> Ensure your project is highlighted in the Project Explorer window.
> Then, from the top menu, select Insert/Module and
> paste the code into the window that opens.
>
> To use this Macro (Sub), FIRST *SELECT* the data you wish to parse. Then
> <alt-F8> opens the macro dialog box. Select the macro by name, and <RUN>.
>
> If you did all that, and the macro did not do anything, then the data you
> ran
> it against did not match, in format, what I had laid out. Or, possibly,
> your
> newsreader wrapped a line and you did not copy it correctly into the
> VBEditor.
> ***Both I and JLGWhiz emphasized to you the importance of properly
> defining
> your format.***
>
> --ron

From: Ron Rosenfeld on
On Tue, 25 May 2010 17:36:54 -0600, "Jim Berglund" <jazzzbo(a)shaw.ca> wrote:

>Terrific! I think I am starting to understand what's been done. This is
>really powerful stuff.
>
>Is it possible to imbed the code in the program or does it have to be called
>in as a macro each time?
>
>I'll work it through again...
>
>OK, I tried a number of variations, without success - even just copying data
>into another spreadsheet and trying it.
>
>Here is some of the actual data...
>
>AAINEY J 1193 STRATHCONA DR SW CALGARY, AB T3H4S1 (403) 293-2671
>(403) 293-2671
>ABEN CONRAD 14 140 STRATHAVEN CI SW CALGARY, AB T3H2N5 (403) 249-1396
>(403) 249-1396
>ADAMS-CATHERWOOD T 71 STRATTON HILL RI SW CALGARY, AB T3H1W8 (403) 685-9699
>(403) 685-9699
>ADAMSON BRYCE P 330 555 STRATHCONA BV SW CALGARY, AB T3H2Z9 (403) 242-2000
>(403) 242-2000
>AIUTO ANTONIO 511 STRATHCONA ME SW CALGARY, AB T3H1X1 (403) 240-2055
>(403) 240-2055
>ALBINATI M J 115 STRADWICK RI SW CALGARY, AB T3H1G7 (403) 242-1028
>(403) 242-1028
>ALEXANDER RONALD R 120 STRATHBURY CI SW CALGARY, AB T3H1P9 (403) 249-2801
>(403) 249-2801
>AL-JANABY I 35 39 STRATHLE CM SW CALGARY, AB T3H5P8 (403) 256-5690
>(403) 256-5690
>ALLEN JACK 66 STRATHLEA CR SW CALGARY, AB T3H5A8 (403) 249-8289
>(403) 249-8289
>AL-SAYED M 11 STRATHLEA CM SW CALGARY, AB T3H5C5 (403) 663-8689
>(403) 663-8689
>ALSHAWI A 124 STRATHCONA CL SW CALGARY, AB T3H1L3 (403) 685-4070
>(403) 685-4070
>AMOOZEGAR NEZAM 7001 STRATHRIDGE GA SW CALGARY, AB T3H4R9 (403) 686-1116
>(403) 686-1116
>ANDA RICHARD 69 STRATHRIDGE CR SW CALGARY, AB T3H3R9 (403) 217-4776
>(403) 217-4776
>ANDERSON D B 80 STRADBROOKE RI SW CALGARY, AB T3H1T9 (403) 686-0702
>(403) 686-0702
>ANDERSON J 24 STRATHDALE CL SW CALGARY, AB T3H2K3 (403) 685-1424
>(403) 685-1424
>
>Would you please take another try and tell me what needs to change? (I think
>the difference may be the comma after CALGARY)
>
>Thanks again, Ron.
>Jim
>

There are two possible differences between the pattern in the first example and
what you've posted above.

1. The phone number is repeated and on a separate line. I cannot tell from
your posting if it is in the same cell (same row) or a different row.

2. The comma is a major difference. Is there always a comma? or is it
optional?

Two changes to be made in the regex:

1. Add the comma after the city names, but not within a capturing group.

2. Delete the "$" at the end, since there may be something after the phone
number (a duplicate phone number)

Result:

myRegExp.Pattern = "^(\D+)\s+(.*)\s(CALGARY|MELBOURNE|SYDNEY)" _
& ",\s+([A-Z]{2})\s+(\w+)\s+(\(\d{3}\)\s+\d{3}-\d{4})"

If the comma is optional, we indicate that in the regex by placing a "?" after
the comma:

myRegExp.Pattern = "^(\D+)\s+(.*)\s(CALGARY|MELBOURNE|SYDNEY)" _
& ",?\s+([A-Z]{2})\s+(\w+)\s+(\(\d{3}\)\s+\d{3}-\d{4})"

This now works on all the examples you've posted.
--ron
From: Ron Rosenfeld on
On Tue, 25 May 2010 17:36:54 -0600, "Jim Berglund" <jazzzbo(a)shaw.ca> wrote:

>Is it possible to imbed the code in the program or does it have to be called
>in as a macro each time?

I don't know what you mean by this question.

What are you considering to be "in the program"?

Regular expressions come in many flavors, and can be used in a variety of
languages.
--ron
From: Jim Berglund on
The phone number is repeated in each row, and
the comma is always there.

Thanks again,
Jim

"Ron Rosenfeld" <ronrosenfeld(a)nospam.org> wrote in message
news:pfqov5pnpc4ej99ec7oo4ra3q2ad6jvgkc(a)4ax.com...
> On Tue, 25 May 2010 17:36:54 -0600, "Jim Berglund" <jazzzbo(a)shaw.ca>
> wrote:
>
>>Terrific! I think I am starting to understand what's been done. This is
>>really powerful stuff.
>>
>>Is it possible to imbed the code in the program or does it have to be
>>called
>>in as a macro each time?
>>
>>I'll work it through again...
>>
>>OK, I tried a number of variations, without success - even just copying
>>data
>>into another spreadsheet and trying it.
>>
>>Here is some of the actual data...
>>
>>AAINEY J 1193 STRATHCONA DR SW CALGARY, AB T3H4S1 (403) 293-2671
>>(403) 293-2671
>>ABEN CONRAD 14 140 STRATHAVEN CI SW CALGARY, AB T3H2N5 (403) 249-1396
>>(403) 249-1396
>>ADAMS-CATHERWOOD T 71 STRATTON HILL RI SW CALGARY, AB T3H1W8 (403)
>>685-9699
>>(403) 685-9699
>>ADAMSON BRYCE P 330 555 STRATHCONA BV SW CALGARY, AB T3H2Z9 (403) 242-2000
>>(403) 242-2000
>>AIUTO ANTONIO 511 STRATHCONA ME SW CALGARY, AB T3H1X1 (403) 240-2055
>>(403) 240-2055
>>ALBINATI M J 115 STRADWICK RI SW CALGARY, AB T3H1G7 (403) 242-1028
>>(403) 242-1028
>>ALEXANDER RONALD R 120 STRATHBURY CI SW CALGARY, AB T3H1P9 (403) 249-2801
>>(403) 249-2801
>>AL-JANABY I 35 39 STRATHLE CM SW CALGARY, AB T3H5P8 (403) 256-5690
>>(403) 256-5690
>>ALLEN JACK 66 STRATHLEA CR SW CALGARY, AB T3H5A8 (403) 249-8289
>>(403) 249-8289
>>AL-SAYED M 11 STRATHLEA CM SW CALGARY, AB T3H5C5 (403) 663-8689
>>(403) 663-8689
>>ALSHAWI A 124 STRATHCONA CL SW CALGARY, AB T3H1L3 (403) 685-4070
>>(403) 685-4070
>>AMOOZEGAR NEZAM 7001 STRATHRIDGE GA SW CALGARY, AB T3H4R9 (403) 686-1116
>>(403) 686-1116
>>ANDA RICHARD 69 STRATHRIDGE CR SW CALGARY, AB T3H3R9 (403) 217-4776
>>(403) 217-4776
>>ANDERSON D B 80 STRADBROOKE RI SW CALGARY, AB T3H1T9 (403) 686-0702
>>(403) 686-0702
>>ANDERSON J 24 STRATHDALE CL SW CALGARY, AB T3H2K3 (403) 685-1424
>>(403) 685-1424
>>
>>Would you please take another try and tell me what needs to change? (I
>>think
>>the difference may be the comma after CALGARY)
>>
>>Thanks again, Ron.
>>Jim
>>
>
> There are two possible differences between the pattern in the first
> example and
> what you've posted above.
>
> 1. The phone number is repeated and on a separate line. I cannot tell
> from
> your posting if it is in the same cell (same row) or a different row.

The phone number is repeated in each row, and
the comma is always there

>
> 2. The comma is a major difference. Is there always a comma? or is it
> optional?



> Two changes to be made in the regex:
>
> 1. Add the comma after the city names, but not within a capturing group.
>
> 2. Delete the "$" at the end, since there may be something after the
> phone
> number (a duplicate phone number)
>
> Result:
>
> myRegExp.Pattern = "^(\D+)\s+(.*)\s(CALGARY|MELBOURNE|SYDNEY)" _
> & ",\s+([A-Z]{2})\s+(\w+)\s+(\(\d{3}\)\s+\d{3}-\d{4})"
>
> If the comma is optional, we indicate that in the regex by placing a "?"
> after
> the comma:
>
> myRegExp.Pattern = "^(\D+)\s+(.*)\s(CALGARY|MELBOURNE|SYDNEY)" _
> & ",?\s+([A-Z]{2})\s+(\w+)\s+(\(\d{3}\)\s+\d{3}-\d{4})"
>
> This now works on all the examples you've posted.
> --ron

From: Ron Rosenfeld on
On Tue, 25 May 2010 19:29:04 -0600, "Jim Berglund" <jazzzbo(a)shaw.ca> wrote:

>The phone number is repeated in each row, and
>the comma is always there.
>
>Thanks again,
>Jim

And what happened when you changed the regex as I suggested? It should work,
unless there's some other difference not accounted for,
--ron