Discussion:
Excelzellen mit bestimmter Hintergrundfarbe addieren !
(zu alt für eine Antwort)
Marcus
2006-01-18 18:05:55 UTC
Permalink
ich hab einem Zellenbereich in dem manche
Zellen im Moment die Hintergrundfarbe grün haben
und manche rot, ...
Dann hab ich Summenzellen für alle die den Hintergrundfarbe
grün haben bzw. rot.
Wenn ich die Hintergundfarbe zwischen rot und grün ändere
sollen sich die Summenfelder auch ändern.

Kann mir einer eine Lösung sagen ?

Danke,
Marcus
Thomas Ramel
2006-01-18 18:56:22 UTC
Permalink
Grüezi Marcus

Marcus schrieb am 18.01.2006
Post by Marcus
ich hab einem Zellenbereich in dem manche
Zellen im Moment die Hintergrundfarbe grün haben
und manche rot, ...
Dann hab ich Summenzellen für alle die den Hintergrundfarbe
grün haben bzw. rot.
Wenn ich die Hintergundfarbe zwischen rot und grün ändere
sollen sich die Summenfelder auch ändern.
Kann mir einer eine Lösung sagen ?
Du kannst dies mit einer benutzerdefinierten Funktion lösen die wie folgt
aussehen kann:

Public Function SummeWennFarbe(Bereich As Range, _
SuchFarbe As Variant, _
Optional Summe_Bereich As Range, _
Optional bolFont As Boolean = False) _
As Variant

'© ***@mvps.org, 30.05.2003
'erweitert 01.07.2004, 31.08.2004, 11.12.2004, 18.04.2005
'Funktion zur Anwendung von SUMMEWENN() mit Hintergrund- oder Schriftfarbe
'als Kriterium
'
'Die Parametereingabe erfolgt in derselben Reihenfolge
'wie in der Funktion SUMMEWENN():
' - Der erste Parameter erwartet den Suchbereich
' - Der zweite Parameter erwartet einen Zellbezug
' (Hintergrund/Schriftfarbe) oder einen Farbindex (Zahl)
' Farbindex '0' zählt Zellen ohne Hintergrund/Standard-Schriftfarbe
' - Der dritte Parameter erwartet optional den zu summierenden Bereich
' - Der vierte Parameter erwartet Wahr/Falsch für die Festlegung
' ob nach Hintergrund- oder Schriftfarbe summiert werden soll

'Zur automatischen Aktualisierung im Tabellenblatt den folgenden Term
'anhängen: +(0*JETZT()) und durch F9 drücken die Funktion aktualisieren
'Also z.B. wie folgt: =SummeWennFarbe(A1:A10;A1)+(0*JETZT())

Dim intColor As Integer
Dim lngI As Long
Dim Summe As Variant

If Summe_Bereich Is Nothing Then Set Summe_Bereich = Bereich

If bolFont Then
If IsObject(SuchFarbe) Then
intColor = SuchFarbe(1).Font.ColorIndex
Else
intColor = SuchFarbe
End If

For lngI = 1 To Bereich.Count
If Bereich(lngI).Font.ColorIndex = intColor Then
Summe = Summe + CDec(Summe_Bereich(lngI))
End If
Next

Else
If IsObject(SuchFarbe) Then
intColor = SuchFarbe(1).Interior.ColorIndex
Else
intColor = SuchFarbe
End If

For lngI = 1 To Bereich.Count
If Bereich(lngI).Interior.ColorIndex = intColor Then
Summe = Summe + CDec(Summe_Bereich(lngI))
End If
Next lngI

End If

SummeWennFarbe = Summe
End Function


Das Erfordernis der automatischen Berechnung beim Ändern einer Farbe kann
allerdings nicht erfüllt werden, da es in Excel kein Ereignis gibt, das auf
die reine Farbänderung anspricht.
Daher das 'Anhängsel' wie in der Funktin beschreiben - bei allen anderen
Berechnungen wird nun auch diese Funktion neu berechnet.


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
Alexander Wolff
2006-01-18 18:54:30 UTC
Permalink
Post by Marcus
ich hab einem Zellenbereich in dem manche
Zellen im Moment die Hintergrundfarbe grün haben
und manche rot, ...
Dann hab ich Summenzellen für alle die den Hintergrundfarbe
grün haben bzw. rot.
Wenn ich die Hintergundfarbe zwischen rot und grün ändere
sollen sich die Summenfelder auch ändern.
Das ist nur mit Excel4Makrofunktionen in separater Spalte oder
einer VBA-Funktion möglich.

Du kannst es Dir einfacher machen wie folgt:

Mache die Farbe abhängig von den Werten einer Spalte und formatiere die
Farben bedingt (damit sind 4 Zustände möglich). Die Summenfelder werten die
Werte der Spalte aus.
--
Hallo + Gruss Alexander (WinXP Home SP1 - Office 2000 SP3) 6----5----7-2
Loading...