Grüezi Marcus
Marcus schrieb am 18.01.2006
Post by Marcusich 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)