Steve möchte eine IF-Anweisung (mithilfe der Arbeitsblattfunktion) basierend auf der Farbe einer Zelle erstellen. Wenn A1 beispielsweise eine grüne Füllung hat, möchte er das Wort „go“ zurückgeben, wenn es eine rote Füllung hat, möchte er das Wort „stop“ zurückgeben, und wenn es eine andere Farbe ist, das Wort „none“ zurückgeben. . Steve verwendet dafür lieber kein Makro.

Leider gibt es keine Möglichkeit, diese Aufgabe ohne Verwendung von Makros in der einen oder anderen Form akzeptabel auszuführen. Die nächste Nicht-Makro-Lösung besteht darin, einen Namen zu erstellen, der die Farben auf folgende Weise bestimmt:

  1. Wählen Sie Zelle A1 aus.

  2. Klicken Sie auf Einfügen | Name | Definieren. Excel zeigt das Dialogfeld Name definieren an.

  3. Verwenden Sie einen Namen wie „mycolor“ (ohne Anführungszeichen).

  4. Geben Sie im Feld Verweise auf Folgendes als einzelne Zeile ein:

  5. OK klicken.

Wenn dieser Name definiert ist, können Sie in jeder Zelle Folgendes eingeben:

=mycolor

Das Ergebnis ist, dass Sie Text sehen, der auf der Farbe der Zelle basiert, in die Sie diese Formel einfügen. Der Nachteil dieses Ansatzes besteht natürlich darin, dass Sie keine anderen Zellen als die referenzieren können, in denen die Formel platziert ist.

Die Lösung besteht also darin, eine benutzerdefinierte Funktion zu verwenden, die (per Definition) ein Makro ist. Das Makro kann die Farbe überprüfen, mit der eine Zelle gefüllt ist, und dann einen Wert zurückgeben. Das folgende Beispiel gibt beispielsweise eines der drei Wörter zurück, basierend auf der Farbe in einer Zielzelle:

Function CheckColor1(range)

If range.Interior.Color = RGB(256, 0, 0) Then         CheckColor1 = "Stop"

ElseIf range.Interior.Color = RGB(0, 256, 0) Then         CheckColor1 = "Go"

Else         CheckColor1 = "Neither"

End If End Function

Dieses Makro wertet die RGB-Werte der Farben in einer Zelle aus und gibt eine Zeichenfolge zurück, die auf diesen Werten basiert. Sie können die Funktion in einer Zelle folgendermaßen verwenden:

=CheckColor1(B5)

Wenn Sie lieber Indexfarben als RGB-Farben prüfen möchten, funktioniert die folgende Variante:

Function CheckColor2(range)

If range.Interior.ColorIndex = 3 Then         CheckColor2 = "Stop"

ElseIf range.Interior.ColorIndex = 14 Then         CheckColor2 = "Go"

Else         CheckColor2 = "Neither"

End If End Function

Unabhängig davon, ob Sie den RGB-Ansatz oder den Farbindex-Ansatz verwenden, sollten Sie überprüfen, ob die in den Makros verwendeten Werte die tatsächlichen Werte für die Farben in den zu testenden Zellen widerspiegeln. Mit anderen Worten, in Excel können Sie verschiedene Grün- und Rottöne verwenden. Stellen Sie daher sicher, dass die in den Makros verwendeten RGB-Werte und Farbindexwerte mit denen der Farbtöne in Ihren Zellen übereinstimmen.

Eine Möglichkeit, dies zu tun, besteht darin, ein sehr einfaches Makro zu verwenden, das nur einen Farbindexwert zurückgibt:

Function GetFillColor(Rng As Range) As Long     GetFillColor = Rng.Interior.ColorIndex End Function

Jetzt können Sie in Ihrem Arbeitsblatt Folgendes verwenden:

=GetFillColor(B5)

Das Ergebnis ist, dass der Farbindexwert von Zelle B5 angezeigt wird. Angenommen, Zelle B5 wird mit einer der erwarteten Farben (rot oder grün) formatiert, können Sie den Indexwert wieder in die früheren Makros einfügen, um die gewünschten Ergebnisse zu erzielen. Sie können diesen Schritt jedoch einfach überspringen und sich auf den von GetFillColor zurückgegebenen Wert verlassen, um eine IF-Formel auf folgende Weise zusammenzustellen:

=IF(GetFillColor(B5)=14,"Go", IF(GetFillColor(B5)=3,"Stop", "Neither"))

Beachten Sie, dass diese Funktionen (unabhängig davon, ob Sie die RGB-Farbwerte oder die Farbindexwerte betrachten) die explizite Formatierung einer Zelle untersuchen. Sie berücksichtigen keine impliziten Formatierungen, wie sie durch bedingte Formatierungen angewendet werden.

Weitere gute Ideen, Formeln und Funktionen zum Arbeiten mit Farben finden Sie auf dieser Seite auf der Website von Chip Pearson:

http://www.cpearson.com/excel/colors.aspx

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (10779) gilt für Microsoft Excel 97, 2000, 2002 und 2003.

Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: