Joli, if there was a missing item in the middle, an empty cell, the End-up approach would only go that far. If you e.g.
Code:
dim c as range
for each c in range("AllAges")
etc.
or otherwise use range("AllAges"), then, as long as the range is correct, you'll get everything.
But I'll admit the using the filter and deleting that way is likely to be far far faster than walking every item in the range one by one.
On the other point, if you used the named range, there would be no hardcoded 4 in the code either.