1. rCell is a range object variable containing (in this case) a single cell.
rCell.Offset (x, y).value just says from the current rCell change rows by 'x' and change columns by 'y'
So if rCell = D4, then rCell.Offset (2, 4) would be H6
So if rCell = D4, then rCell.Offset (-2, 4) would be H2
So if rCell = D4, then rCell.Offset (0, 4) would be H4
2. As
Aflatoon said, you need to go through each cell in a .Column. However, if you went through all the cells in Column D, that's a lot of rows.
There are many ways to stop when you've run out of data, so this was just one
.Columns("D
").SpecialCell ( ) will just select the cells in column D that meet the criteria (text constants in this case).
It will fail if there are not cells that meet the criteria, so that's the reason I like to 'wrap' it on On error and then test for Nothing
The VBA help has a good write up and examples
Paul