VBA имеет функцию IsDate, которая достаточно надежна при определении того, является ли содержимое ячейки допустимой датой или нет.
sub scrubNonDates()
dim i as long
with worksheets("sheet1")
for i=2 to .cells(.rows.count, "A").end(xlup).row
if not ISDATE(.cells(i, "A")) then .cells(i, "A").clear
next i
end with
end sub