Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Summe, wenn gefärbt

Summe, wenn gefärbt
16.11.2022 14:18:16
Simon
Hallo zusammen,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summe, wenn gefärbt
16.11.2022 14:36:19
Daniel
Hi
der Code läuft halt über alle angegeben Zellen.
Wenn du ganze Spalten angibst, dann auch über alle 1,04 Mio Zellen und das dauert halt.
was man hier machen kann wäre, den Bereich auf den tatsächlich vom Tabellenblatt genutzen Bereich einzuschränken, damit man in der Formel wenigstens ganze Spalten angeben kann:

For Each zelle In Intersect(Bereich, Bereich.Worksheet.Usedrange)
das zweite Problem sollte das Application.Volatile lösen, in dem es dafür sorgt, dass die Formel neu berechnet wird, wenn du einen Zellwert einer beliebigen Zelle änderst. Es muss aber ein Zellwert sein. Das Ändern einer Formatierung allein löst in Excel keine Neuberechnung der Formeln aus.
Der einzige Weg sofort eine Neuberechnung zu bekommen ist, wenn du die Zelle nicht über die Formatierung umfärbst, sondern indem du das Format von einer anderen Zelle mit dem Pinsel (oder mit Kopieren - Inhalte einfügen Formate) überträgst. Denn das ist für Excel keine Formatänderung, sondern ein (unvollständiges) kopieren und Einfügen und dann wird neu gerechnet.
Gruß Daniel
Anzeige
AW: Summe, wenn gefärbt
16.11.2022 14:41:28
Simon
Hallo Daniel,
vielen Dank für deine schnelle und hilfreiche Antwort! Mit usedrange sollte es denke ich klappen. Eine Lösung für das zweite Problem ist eigentlich auch nicht wirklich wichtig. Wäre nur nice to have.
Gruß Simon

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige