Djauncey,
The code SHOULD work, and in fact did work on a test sheet that I worked with. If you are having problems, can you possibly post a copy of the workbook?
Also, I noticed an error in the code. In the code I wrote, I used the line:
lrow = Cells(Rows.Count, 1).End(xlUp).Row
to determine the last row of your range. This allows us to use a dynamic range and NOT use a fixed range.
That said, the following code checks expands the range to the used range within the worksheet:
lrow = Cells(Rows.Count, 1).End(xlUp).Row
Set r = Range("A3:A" & lrow)
THe range is now A3 to A and the last row. In your code, you used
lrow = Cells(Rows.Count, 1).End(xlUp).Row
Set r = Range("A3:A20000" & lrow)
Essentially, you used BOTH a fixed range AND the variable, which MAY be the cause of the problems. Amend that and see if it helps. If not, then post a copy of the book.
Bookmarks