If you pick your range properly and test on that range in 1 go then VBA can be very fast so for example
Code:
Sub Test()
Dim Lastcell As Range
Set Lastcell = Range("B1").EntireColumn.Find("*", , , , , xlPrevious)
If Not Lastcell Is Nothing Then
With Range(Cells(2, 1), Cells(Lastcell.Row, 1))
.FormulaR1C1 = "=IF(OR(RC[1]=""a"",RC[1]=""b"",RC[1]=""c"",RC[1]=""f""),""TRUE"",""False"")"
.Formula = .Value
End With
End If
Set Lastcell = Nothing
End Sub
which uses shades formula from above runs in approx 1 second
Dave