| home |  
  

   © 2005 by Friedel Schmidt •  E-Mail  •                      Top  

   | impressum | feedback | home |  


Inhaltsverzeichnis

Suchen

Links
  

Farben in Excel
Versionen: Excel 97

Mit farbig markierten Zellen wird ja häufig in Excel gearbeitet. Relativ unbekannt sind allerdings die Möglichkeiten, die sich aus der richtigen Nutzung ergeben.

Zunächst einige grundsätzliche Anmerkungen zur Arbeitsmappen-Farbpalette
In Excel stehen 56 Farben zur Verfügung , die mit den Farbindizes 1 bis 56 belegt sind. Da einige doppelt belegt sind handelt es sich allerdings in der Voreinstellung nicht um 56 verschiedene Farben. Das hat seinen Grund darin, dass Excel zwischen den ersten 40 Farben, die für Tabellenblatt- und den letzten 16 Farben, die für Diagramm-Formatierungen vorgesehen sind, unterscheidet.
Die Farbpalette kann man an eigene Bedürnisse anpassen, oder besser gesagt umdefinieren. Allerdings sollte man damit vorsichtig sein, wenn man Diagramme in der Arbeitsmappe einsetzt, da sich das auf die Diagrammdarstellung negativ auswirken kann.

Vorweg noch zwei kleine Makros um den jeweiligen Farbindex der in Excel genutzten Farben und die dazugehörige Farbe in einer Tabelle darzustellen:

Sub Farbindex()
Dim z%
For z = 1 To 56
    Cells(z, 1) = z
    Cells(z, 2).Interior.ColorIndex = z
Next
End Sub


Mit dem vorstehenden Makro werden die Zellhintergründe mit der entsprechenden Farbe markiert. (Ansicht der entsprechenden Tabelle) Sollen die Schriftfarben (der Farbcode ist identisch mit dem der Zellhintergründe) entsprechend dargestellt werden, verwendet man folgendes Makro:

Sub FontFarbindex()
Dim z%
For z = 1 To 56
    Cells(z, 1) = z
    Cells(z, 2) = z
    Cells(z, 2).Font.ColorIndex = z
Next
End Sub


Nun zum eigentlichen Sinn des Vorherigen. Was man irgendwie erzeugen kann, kann man auch abfragen und auswerten. Als erstes ist zunächst der Farbindex einer farbig formatierten Zelle zu ermitteln:

Function Farbindex(rng As Range)
   Farbindex = rng.Interior.ColorIndex
End Function


Um den Index der Schriftfarbe festzustellen bedarf es nur einer kleinen Anpassung:

Function FontFarbindex(rng As Range)
   FontFarbindex = rng.Font.ColorIndex
End Function


(Anmerkung: "Font.ColorIndex" für die Schriftfarbe anstatt "Interior.ColorIndex" für die Zellfarbe gilt grundsätzlich in allen weiteren Beispielen. Die anschließenden Beispiele beziehen sich dann alle auf die Farbe des Zellhintergrundes.)

Nach Eingabe dieser beiden UDF's (User defined Function) stehen in der Tabelle zwei neue benutzerdefinierte Funktionen zur Verfügung:

Ist z.B. der Zellhintergrund der Zelle A1 blau formatiert, erhält man nach Eingabe der Formel =Farbindex(A1) in einer beliebigen Zelle den Rückgabewert "5".

Wurde der gleichen Zelle die Schriftfarbe grün zugewiesen, ergibt die Formel =FontFarbindex(A1) den Rückgabewert "10"

Hier ist unbedingt zu beachten, das dies nur bei direkt zugewiesenen Farben funktioniert und benutzerdefinierte Formate nicht ausgelesen werden können.

Dann wollen wir jetzt mal daran gehen, die farbigen Zellen eines Bereichs zu zählen:

Function Farbenzählen(rng As Range)
    Dim Zelle As Object
    Application.Volatile
    For Each Zelle In rng
        If Zelle.Interior.ColorIndex <> xlNone Then Farbenzählen = Farbenzählen + 1
    Next
End Function


Mit der Formel "=Farbenzählen(A1:G9)" erhält man dann die Anzahl der farbigen Zellen im angegeben Bereich. Analog dazu erhält man mit =RoteZellenZählen(A1:G9) die Anzahl aller roten Zellen im Bereich - wenn man nachfolgende UDF erstellt hat:

Function RoteZellenZählen(rng As Range)
    Dim Zelle As Object
    Application.Volatile
    For Each Zelle In rng
        If Zelle.Interior.ColorIndex = 3 Then RoteZellenZählen = RoteZellenZählen + 1
    Next
End Function


... oder eben auch die Anzahl aller hellgrünen Zellen:

Function HellgrüneZellenZählen(rng As Range)
    Dim Zelle As Object
    Application.Volatile
    For Each Zelle In rng
        If Zelle.Interior.ColorIndex = 4 Then HellgrüneZellenZählen = HellgrüneZellenZählen + 1
    Next
End Function


Und bei mindestens 40 Farbmöglichkeiten hat man dann jede Menge benutzerdefinierte Funktionen und verliert bald den Überblick!

Einfacher geht es mit einer kleinen Verbesserung:

Function FarbigeZellenZählen(rng As Range, Farbe)
    Dim Zelle As Object
    Application.Volatile
    For Each Zelle In rng
        If Zelle.Interior.ColorIndex = Farbe Then FarbigeZellenZählen = FarbigeZellenZählen + 1
    Next
End Function


Mit =FarbigeZellenZählen(A1:G9;5) erhält man die Anzahl aller blauen Zellen im Bereich. Benötigt man die Anzahl aller roten Zellen, ersetzt man einfach die 5 durch eine 3 und.... Ja - genau: Diese Funktion ist wesentlich flexibler als die vorherigen. Wobei allerdings jede Variante für den geeigneten Zweck schon ihren Sinn hat.


Farbige Zellen summieren
Farb - Indizies