Summe, wenn gefärbt
16.11.2022 14:18:16
Simon
ich möchte per Formel die Summe aller eingefärbten Zellen in einem bestimmten Tabellenblatt bilden. Ich habe im Netz folgenden Code gefunden, der auch gut funktioniert. Allerdings hängt sich Excel auf und wird unglaublich langsam, wenn ich statt einen kleinen Bereich zu durchsuchen als Suchbereich eine ganze Spalte (z.B.
=HintergrundFarbeSummieren($E$13;D:D)
angebe. Gibt es nicht vielleicht einfach eine Excelformel, die dasselbe Ergebnis liefern kann, ohne solche Performanceprobleme zu verursachen? Darüber hinaus ist der Code auch nicht perfekt, da sich die Formel nur aktualisiert, wenn man wieder in die Formel klickt oder wenn sich ein Wert einer bereits eingefärbten Zelle ändert, nicht jedoch wenn man eine Zelle mit vorhandenem Wert neu einfärbt. Gibt es dafür vll. auch eine einfache Lösung?
Function FarbeZählen(Bereich, Farbe)
Dim zelle As Object
Application.Volatile
For Each zelle In Bereich
If zelle.Font.ColorIndex = Farbe Then FarbeZählen = FarbeZählen + 1
Next
End Function
Function HintergrundFarbeZählen(Bereich, Farbe)
Dim zelle As Object
Application.Volatile
For Each zelle In Bereich
If zelle.Interior.ColorIndex = Farbe Then HintergrundFarbeZählen = HintergrundFarbeZählen + 1
Next
End Function
Option Explicit
Function HintergrundFarbeSummieren(Farbe As Range, Summenbereich As Range)
Application.Volatile True
Dim zelle As Range
Dim ZFarbe As Long
ZFarbe = Farbe.Cells(1, 1).Interior.ColorIndex
For Each zelle In Summenbereich
If zelle.Interior.ColorIndex = ZFarbe Then
HintergrundFarbeSummieren = HintergrundFarbeSummieren + zelle.Value
End If
Next
End Function
Hat jemand eine Idee, was man gegen die Performanceprobleme machen kann? Über Antworten würde ich mich freuen.Vielen Dank und Grüße
Simon