Wie kann eine Formel für die bedingte Formatierung schneller auf einen großen Bereich angewendet werden?

Ich habe eine bedingte Formatierungsformel erstellt

=AND(SUMPRODUCT(($A$2:$A$" & lastRow & "=$A2)*($CT$2:$CT$" & lastRow & "=$CT2)*($CU$2:$CU$" & lastRow & "=$CU2)*($CV$2:$CV$" & lastRow & "=$CV2)*($CW$2:$CW$" & lastRow & "=$CW2))>1,$CT2 <> """")"

So finden und markieren Sie doppelte Aufladungen anhand mehrerer Kriterien: Produkt-XID (Spalte A), Aufladekriterium 1 (Spalte CT), Aufladekriterium 2 (Spalte CU), Aufladetyp (Spalte CV) und Aufladestufe (Spalte CW). Die Formel wirkt wie ein Zauber, der doppelte Aufladungen hervorhebt. Die meiste Zeit muss ich es jedoch auf eine große Anzahl von Zeilen anwenden (über 15000) und es dauert mehr als 10 Minuten, um die bedingte Formatformel anzuwenden. Ich war neugierig, ob es einen schnelleren Weg gibt, diese Formel auf so viele Zellen anzuwenden. Mein gesamter Referenzcode ist

'File Complete, highlights duplicate upcharges for products and skips over blank upcharge rows
Sub dupUpchargeCheck()

Dim lastRow As Integer
lastRow = ActiveSheet.Cells(Rows.Count, "CS").End(xlUp).Row
ActiveSheet.Range("CS2:CS" & lastRow).Select
With ActiveSheet.Range("CS2:CS" & lastRow)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(SUMPRODUCT(($A$2:$A$" & lastRow & "=$A2)*($CT$2:$CT$" & lastRow & "=$CT2)*($CU$2:$CU$" & lastRow & "=$CU2)*($CV$2:$CV$" & lastRow & "=$CV2)*($CW$2:$CW$" & lastRow & "=$CW2))>1,$CT2 <> """")"
    .FormatConditions(.FormatConditions.Count).Interior.ColorIndex = 3
End With

End Sub

Jeder Rat ist willkommen!

BEARBEITEN

Nach ein bisschen herumgespielt habe ich festgestellt, dass mein Problem nicht mit der Anwendung der bedingten Formatierungsformel auf den Zellenbereich zusammenhängt, sondern wenn ich auf die Dropdown-Liste klicke, um nach der Farbe zu filtern (nachdem der Code ausgeführt wurde und Die bedingte Formatierung wird angewendet. Es dauert ewig, bis das Filter-Dropdown-Feld angezeigt wird. Irgendeine Idee, wie ich dieses Problem umgehen kann? Ich habe einen von @Nate Vorschlägen von @ ausprobiecalcState = Application.Calculation, platziere es direkt vor der Zeile, in der ich gefiltert habe (via vba), in der Hoffnung, dass die Berechnungen nicht mehr ausgeführt werden, da das System versucht hat, das Filterfeld anzuzeigen, aber es dauert immer noch ewig. Mit dem ZusatzApplication.ScreenUpdating = False Die Verarbeitungszeit ist etwas kürzer (ungefähr 551 Sekunden für 15000 Zeilen). Ich fürchte, das ist vielleicht das Beste, was ich kriegen kann, wenn nicht jemand anderes Vorschläge hat?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage