Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rechnen mit Farbe

273 views
Skip to first unread message

Werner Studer

unread,
Aug 3, 2008, 4:37:25 AM8/3/08
to
Ich habe eine Ferienliste mit Excel erstellt, wo die Ferien, Absendzen etc.
(z.B. ein Feld mit dem Wert 1 und das Feld) farbig dargestellt sind. Gibt es
eine Funktion (wie z.B. Summwenn) die das Addieren der Felder die farbig
sind ermöglicht. z.B. =SUMMEWENN(B1:B15;"Farbe Rot";B1:B12), Farbe Rot
bezieht isch auf die Feldfarbe.
Danle fürs Feeback, Werner


Hajo_Zi

unread,
Aug 3, 2008, 4:59:01 AM8/3/08
to
Hallo Werner,

falls es nichtr per bedingter Formatierung ist.
http://hajo-excel.de/chCounter3/getfile.php?id=48


Gruß Hajo
MVP für Microsoft Excel
Betriebssystem Vista Ultimate SP1 und Excel Version2007 SP1
http://Hajo-Excel.de/

Thomas Hübner

unread,
Aug 3, 2008, 5:08:31 AM8/3/08
to
Werner Studer schrieb:
Das Einzige was mir einfällt wäre eine Macrofunktion, die den Colorindex
der zelle als wert zurückliefert. Mit dieser Zahl kannst Du dann
SUMMEWENN() verwenden

Function FarbID(ByVal range As range) As Integer
FarbID = range.Interior.ColorIndex
End Function

Verwendung:
=FarbID(D30)

Vorsicht! Änderung einer Zellfarbe löst kein Event aus. Die Berechnung
muß per [F9] o.ä. angestoßen werden

Gruß,
Thomas

Thomas Ramel

unread,
Aug 3, 2008, 5:13:17 AM8/3/08
to
Grüezi Werner

Werner Studer schrieb am 03.08.2008

> Ich habe eine Ferienliste mit Excel erstellt, wo die Ferien, Absendzen etc.
> (z.B. ein Feld mit dem Wert 1 und das Feld) farbig dargestellt sind.

Wie kommt diese Farbe in die Zelle?
Per Bedingter Formatierung (das wäre eher schlecht) oder ist die Zelle von
Hand eingefärbt worden?

> Gibt es
> eine Funktion (wie z.B. Summwenn) die das Addieren der Felder die farbig
> sind ermöglicht. z.B. =SUMMEWENN(B1:B15;"Farbe Rot";B1:B12), Farbe Rot
> bezieht isch auf die Feldfarbe.

Versuche es mal mit der folgenden Funktion, die Du in ein Modul der Mappe
kopierst und dann ganz wie die anderen Funktionen auch im Tabellenblatt
verwendest:

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

t.r...@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

Mit freundlichen Grüssen
Thomas Ramel

--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-3]
Microsoft Excel - Die ExpertenTipps

Raimo Becker

unread,
Aug 4, 2008, 8:31:01 AM8/4/08
to
Hallo Werner,

falls es doch die bedingte Formatierung ist schalte mal folgendes vor die
anderen genannten Makros:

Sub Bedingte_formatierung_uebernehmen()
Application.ScreenUpdating = False
'Bereich anpassen
For i = 2 To 20
For s = 1 To 5

fmc1Intc = Cells(i, s).FormatConditions(3).Interior.ColorIndex
fmc2Intc = Cells(i, s).FormatConditions(2).Interior.ColorIndex
fmc3Intc = Cells(i, s).FormatConditions(1).Interior.ColorIndex

'fmc1op = Cells(i, s).FormatConditions(3).Operator
'fmc2op = Cells(i, s).FormatConditions(2).Operator
'fmc3Op = Cells(i, s).FormatConditions(1).Operator

fmc1Fml = Cells(i, s).FormatConditions(3).Formula1
fmc2Fml = Cells(i, s).FormatConditions(2).Formula1
fmc3Fml = Cells(i, s).FormatConditions(1).Formula1


If CDbl(Cells(i, s)) >= fmc1Fml Then
Cells(i, s).Interior.ColorIndex = fmc1Intc
End If
Debug.Print Cells(i, s)

If CDbl(Cells(i, s)) >= fmc2Fml Then
Cells(i, s).Interior.ColorIndex = fmc2Intc
End If

If CDbl(Cells(i, s)) >= fmc3Fml Then
Cells(i, s).Interior.ColorIndex = fmc3Intc
End If


Next s
Next i
Application.ScreenUpdating = True
end sub

Im If Block musst du noch die Bedingungen anpassen, dann werden die
bedingten Formatierungen direkt in die Telle geschrieben.

Gruß aus Hannover

Raimo

Raimo Becker

unread,
Aug 4, 2008, 8:37:00 AM8/4/08
to

...Sorry du hast ja Datümer in der Bedingung...

nicht CDbl() im If Block sondern CDate()...

Peter Schleif

unread,
Aug 4, 2008, 10:57:43 AM8/4/08
to
Raimo Becker schrieb am 04.08.2008 14:31 Uhr:
>
> fmc1Intc = Cells(i, s).FormatConditions(3).Interior.ColorIndex
> fmc2Intc = Cells(i, s).FormatConditions(2).Interior.ColorIndex
> fmc3Intc = Cells(i, s).FormatConditions(1).Interior.ColorIndex

Müsste man hier nicht für jede Zelle prüfen, wieviele bedingte
Formatierungen sie enthält?

.FormatConditions.Count

Zugriff auf nicht existierende FC erzeugt bei mir (2002) einen
Laufzeitfehler.

Peter

Raimo Becker

unread,
Aug 4, 2008, 11:48:01 AM8/4/08
to
Hallo Peter,

ja. Man müsste prüfen wieviele Conditions drin sind.
Das war auch nur ein alter Versuch den ich mit dem "sehr beliebten und total
professionellen" OnError Resume Next naja... "abgefangen" habe :-)

Ist halt ein alter Versuch, zwar kein Luftcode aber auch noch nicht fertig.
Da ich auf Access umgestiegen bin, mach ich in XL nicht mehr so viel.

Wenn jemand Lust hat, den Rest zu vervollständigen, wäre ich nicht
abgeneigt, diese zu sehen.
Manchmal braucht man es ja doch; um die Bed.Formatierung zu umgehen.
Besten Gruß
Raimo

Thomas Ramel

unread,
Aug 4, 2008, 12:27:31 PM8/4/08
to
Grüezi Raimo Becker

Raimo Becker schrieb am 04.08.2008

> Ist halt ein alter Versuch, zwar kein Luftcode aber auch noch nicht fertig.


> Da ich auf Access umgestiegen bin, mach ich in XL nicht mehr so viel.
>
> Wenn jemand Lust hat, den Rest zu vervollständigen, wäre ich nicht
> abgeneigt, diese zu sehen.

Ich denke, dass der Code (bisher) nur in bestimmten Bedingungen einsetzbar
ist. Mit den Folgenden Werten:

10
20
45
79
68
42

und den drei folgenden Bedingungen:

Zellwert ist / zwischen / 5 / und / 15 ==> Farbe Rot
Zellwert ist / zwischen / 15 / und / 35 ==> Farbe Gelb
Zellwert ist / zwischen / 35 / und / 50 ==> Farbe Grün


Hatte ich nach laufen lassen des Codes und anschliessender Entfernung der
Bedingten Formatierung alle Zellen mit roter Einfärbung.

> Manchmal braucht man es ja doch; um die Bed.Formatierung zu umgehen.

Berechnungen aufgrund von Formatierungen sollten IMO tunlichst vermieden
werden - sie sind einfach zu unsicher, zumal ein reines Ändern des Formates
keine Neuberechnung auslöst.

Zur Bedingten Formatierung müsste man auslesen welche der drei Bedingungen
denn zutrifft und erst dann den entsprechenden ColorIndex zuweisen.
Auf der folgenden Seite wird dieses Unterfangen recht ausfürhlich
beschrieben:

http://www.cpearson.com/excel/CFColors.htm

Thomas Hübner

unread,
Aug 4, 2008, 2:03:52 PM8/4/08
to
Thomas Ramel schrieb:

> Ich denke, dass der Code (bisher) nur in bestimmten Bedingungen einsetzbar
> ist. Mit den Folgenden Werten:

Ergänzend ist noch hinzuzufügen das der ColorIndex völlig frei
konfigurierbar ist. Es ist also keinesfalls davon auszugehen das Rot
z.B. immer auf dem gleichen Index liegt. Wir haben z.B. in der Firma
einen CI angepassten Colorindex der komplett auf die Firmenfarben
angepaßt ist.

Gruß,
Thomas

Raimo Becker

unread,
Aug 4, 2008, 2:55:20 PM8/4/08
to
Hallo Thomas und Thomas,

mir ist klar, dass man nicht mit Farben rechnen soll (obwohl man den
ColorIndex über eine RGB Abfrage in cells.interior.color ersetzten könnte).
Ich wollte nur zeigen, dass man das problem trotz BedingterFormatierung lösen
könnte.
Natürlich lasse ich erst alles ausrechnen und formatiere erst danach.


Besten Gruß

Raimo

Thomas Ramel

unread,
Aug 4, 2008, 4:52:15 PM8/4/08
to
Grüezi Thomas

Thomas Hübner schrieb am 04.08.2008

Ja, das ist korrekt - wird jedoch wie in Raimos Code, der ColorIndex aus
der Bedingten Formatierung ausgelesen und dann als Hintergrund der Zelle
gesetzt, sollte das eigentlich auch mit angepassten CI dann passen.

Thomas Ramel

unread,
Aug 4, 2008, 4:55:10 PM8/4/08
to
Grüezi Raimo

Raimo Becker schrieb am 04.08.2008

> mir ist klar, dass man nicht mit Farben rechnen soll (obwohl man den

> ColorIndex über eine RGB Abfrage in cells.interior.color ersetzten könnte).

Auch das ist nur bedingt möglich - Excel kann pro Mappe nur 56
unterschiedliche Farben verwalten (jedenfalls bis xl2003). Weist Du nun per
Interior.Color einen RGB-Wert zu, der nicht in diesen 56 Farben enthalten
ist, weist Excel selbstständig den ähnlichsten ColorIndex zu (wobei nicht
so ganz klar ist, wie Excel diese Ähnlichkeit ermittelt).

Raimo Becker

unread,
Aug 4, 2008, 5:31:01 PM8/4/08
to
Hallo Thomas,

> Auch das ist nur bedingt möglich - Excel kann pro Mappe nur 56
> unterschiedliche Farben verwalten (jedenfalls bis xl2003). Weist Du nun per
> Interior.Color einen RGB-Wert zu, der nicht in diesen 56 Farben enthalten
> ist, weist Excel selbstständig den ähnlichsten ColorIndex zu (wobei nicht
> so ganz klar ist, wie Excel diese Ähnlichkeit ermittelt).

Das war mir natürlich nicht bewusst
Jetzt wird mir auch klar, warum meine Verlaufsgrafiken so ~unsauber bzw.
gleich~ aussahen [Schwarz-Weiß-Verläufe]. Ich dache immer es liegt am TFT
oder Röhre oder am Beamer... Oder halt am Drucker...

Huiuiui.... man gut dass ich meine Scheine [BWL] schon habe :-)


LG Raimo

Raimo Becker

unread,
Aug 4, 2008, 7:05:01 PM8/4/08
to

Hallo nochmal Thomas,

ist denn; wenn "nur" 56 Farben in Excel dargestellt werden können SPSS das
bessere Tool der Wahl? Ich finde nix gutes beim gurgeln aber benuzt SPSS nich
auch das XL.ChartObject? Ist das ein XL-Limit oder geht das mit SPSS gut?
Habe leider hier kein Reproduktionsumfeld zum Testen.
Das täte mich aber interessieren (Wobei ich schon sagen muss das über 20
Grautöne recht heftig zum visualisieren sind, das kriegt das menschliche Auge
ja fast nicht hin)

Hintergrund: Meine Daten kommen als CSV,TXT besser wenn sie aus einer
DB-Anwendung kommen. Ich ziehe sie oft per ODBC in SPSS rein, verarbeite und
schicke Sie dann "plain" in XL und mache die Diagramme.
---- aber auch viele im SPSS
Jetzt habe ich natürlich die Befürchtung das bei der Darstellung einiges im
Argen liegt.

Das ist zwar kein XL aber vielleicht weißt du ja was darüber.

Vielen Dank

Raimo


Thomas Ramel

unread,
Aug 5, 2008, 12:05:50 PM8/5/08
to
Grüezi Raimo

Raimo Becker schrieb am 05.08.2008

> ist denn; wenn "nur" 56 Farben in Excel dargestellt werden können SPSS das
> bessere Tool der Wahl? Ich finde nix gutes beim gurgeln aber benuzt SPSS nich
> auch das XL.ChartObject? Ist das ein XL-Limit oder geht das mit SPSS gut?

Das kann ich leider nicht beantworten, da ich SPSS nicht wirklich kenne.

Die 56 Farben die Excel in einer Mappe verwendet kannst Du allesamt selber
über RGB-Werte in den Optionen festlegen. So können auch Farbabstufungen in
einer Gruppe sehr schön dargestellt werden.

Wie genau die Charts in SPSS erstellt werden entzieht sich meiner Kenntnis,
ich nehme jedoch an, dass sie eine eigene Engine haben.

> Das täte mich aber interessieren (Wobei ich schon sagen muss das über 20
> Grautöne recht heftig zum visualisieren sind, das kriegt das menschliche Auge
> ja fast nicht hin)

Ja, das ist ebenfalls wahr - aber teste es doch einfach mal aus in eine
eigenen Excel-Mappe.


Danke auch für deine Hintergrund-Infos, die machen es immer wieder
interessant jemanden zu unterstützen.

Raimo Becker

unread,
Aug 5, 2008, 8:09:00 PM8/5/08
to
Hallo Thomas,

Schleim ModusOn

> Danke auch für deine Hintergrund-Infos, die machen es immer wieder
> interessant jemanden zu unterstützen.

Das ist der Grund warum du "EmmWiePie" bist und ich nur "WeeFauAa" [WVA]
so haben wir beim Bund unseren Hauptfeldwebel genannt.
Der "Wichtigste Von Allen"
Mit der Erklärung von SVERWEIS ist man ja schon groß, SUMMENPRODUKT ist ja
fast schon göttlich.
www.excelformeln.de sag denen garnich - muss ja nicht jeder alles wissen :-)

Schleim ModusOff

Ich benutze XL aber für alles mögliche zum Rechnen. Öffne von AC (wenns
sein muss), ein Sheet mit Verweis; lasse rechnen in XL, einlesen in ein
Feld--- dann gib ihm; und ab dafür.
Danach .close set nothing;wenn ich dann was exportiere, hat es was ich will
- und gut is!

So! Feierabend Emma.
Guts Nächtle

0 new messages