Применение условного форматирования ко всему листу - действительно очень плохая идея. Расчет будет срабатывать каждый раз, когда вы редактируете ЛЮБУЮ ячейку на листе.
Вместо условного форматирования всего листа используйте код для форматирования только ячейки, которая была только что изменена. Отформатируйте заливку ячейки и шрифт.
Запустите этот код в событии Worksheet_Change в модуле Sheet и дайте ему работать в целевой ячейке. Тогда он будет работать быстро и изменит только ячейку, которая была только что изменена.
Примерно так. Добавьте больше ElseIF по мере необходимости. Код поступает в модуль Sheet листа.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "foo" Then
With Target.Interior
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
End With
ElseIf Target.Value = "bar" Then
With Target.Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
End With
End If
End Sub