Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: farbe auslesen

farbe auslesen
17.08.2004 12:19:48
thomas
Ich habe ein Problem. Ich habe in Excel mit bedingter formatierung ein paar zellen formatiert! die haben je nach dem wie der wert ist rot grün oder gelb. Nun möchte ich eine tabelle erstellen die mir alle werte der roten grünen und gelben zellen anzeigt! also in einem datenblatt soll es die anzeigen wo der hintergrund rot ist auf einem anderen die wo es grün ist und nochmals auf einem anderen die wo es gelb ist!
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: farbe auslesen
ChrisL
Hi Thomas
Die durch eine bedingte Formatierung erzeugten Farben lassen sich nicht auswerten, allerdings das Kriterium, nach dem du die Bedingung erstellt hast.
Am einfachsten mit Autofilter nach den entsprechenden Kriterien filtern.
Gruss
Chris
AW: farbe auslesen
17.08.2004 13:53:13
thomas
kann ich nicht irgend wie mit wenn sagen wenn grün dann und wenn rot mach das ?
Anzeige
AW: farbe auslesen
17.08.2004 14:20:27
Bertram
Hi Chris,
das geht nur über VBA, allerdings auch nicht wenn die Farbe über die bedingte Formatierung zugwiesen wird.
Gruß
Bertram
AW: farbe auslesen
Ulf
Auch das geht! Nur ist es relativ aufwändig, deshalb tut sich das niemand an.
Ulf
AW: farbe auslesen
ChrisL
Hi Ulf
Wie soll das gehen? Meines Wissens gibt es keine ColorIndex, wenn die Farbe mittels bedingter Formatierung erzeugt wurde. Klar könnte man das Kriterium abfragen, aber dann sind wir wieder bei meiner ersten Antwort.
Gruss
Chris
Anzeige
AW: farbe auslesen
Ulf
Klar gibts einen Colorindex. Nur das nutzt ja nichts, du musst ja auch abfragen, ob die
entsprechende Bedingung eingetreten ist. Da leider eine Funktion, wie Value bei Gültigkeit fehlt, muss man die Abfrage selbst machen und das ist kompliziert, wenn die Bedingung eine komplexe Formel ist. Ansich ja auch kein Problem und längst gelöst, nur halt mit relativ großem Aufwand.
Ulf
Anzeige
AW: farbe auslesen
ChrisL
Hi Ulf
OK, es gibt einen ColorIndex auch bei Zellen mit bedingter Formatierung, allerdings ist der Index der gleiche ob die Zelle Grün oder Rot ist.
Tja schade dass wir die genaue Bedingung nicht kennen, vielleicht wärs gar nicht so kompliziert.
Gruss
Chris
AW: farbe auslesen
17.08.2004 23:13:36
nighty
hi alle :)
wie gewuenscht :)
das urmakro netterweise von hajo zur verfuegung gestellt bekommen,hab es nur leicht modifiziert
gruss nighty
beispiel
=BedingungAdd(A1:A3;3)
gesuchte farbe einer bedingten formatierung,in diesem falle rot fuer die drei
einzufuegen unter alt f11(vbeditor)/einfugen/allgemeines modul

Function BedingungAdd(Zellen As Range, farbe As Long) As Double
Dim Zelle As Range
Dim farben As Integer
For Each Zelle In Zellen
farben = GetCellColor(Zelle)
If farben = farbe Then
BedingungAdd = BedingungAdd + Zelle.Value
End If
Next
End Function


Function GetCellColor(cell As Range) As Integer
Dim i
Dim myVal
Dim myColor As Integer
Dim done As Boolean
On Error Resume Next
Names("testname").Delete
On Error GoTo 0
Application.ReferenceStyle = xlR1C1
myVal = cell.Value
myColor = cell.Interior.ColorIndex
done = False
For i = 1 To cell.FormatConditions.Count
With cell.FormatConditions.Item(i)
If .Type = 1 Then
Select Case .Operator
Case xlBetween
If (myVal >= Evaluate(.Formula1) And myVal <= Evaluate(.Formula2)) _
Or (myVal <= Evaluate(.Formula1) And myVal >= Evaluate(.Formula2)) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlEqual
If myVal = Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlGreater
If myVal > Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlGreaterEqual
If myVal >= Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlLess
If myVal < Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlLessEqual
If myVal <= Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlNotBetween
If myVal < Evaluate(.Formula1) Or myVal > Evaluate(.Formula2) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlNotEqual
If myVal <> Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
End Select
ElseIf .Type = 2 Then
Names.Add Name:="testname", RefersToR1C1Local:=.Formula1
If Evaluate("testname") Then
myColor = .Interior.ColorIndex
done = True
End If
Names("testname").Delete
Else
MsgBox "Unbekannter Typ: " & .Type, , "PANIC: In 

Function GetCellColor"
Exit Function
End If
End With
If done Then Exit For
Next
Application.ReferenceStyle = xlA1
GetCellColor = myColor
End Function

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellenfarbe in Excel auslesen und verarbeiten


Schritt-für-Schritt-Anleitung

Um die Hintergrundfarbe von Zellen auszulesen, kannst du die folgende VBA-Funktion verwenden. Diese Methode ist besonders nützlich, wenn du die Farben von Zellen, die mit bedingter Formatierung formatiert sind, abfragen möchtest.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Function GetCellColor(cell As Range) As Integer
    Dim myColor As Integer
    myColor = cell.Interior.ColorIndex
    GetCellColor = myColor
End Function
  1. Schließe den VBA-Editor und kehre zu deinem Excel-Blatt zurück.
  2. Verwende die Funktion in einer Zelle, zum Beispiel =GetCellColor(A1), um die Zellenfarbe auszulesen.

Mit dieser Funktion kannst du den ColorIndex der Zelle ermitteln und anschließend bei Bedarf weiterverarbeiten.


Häufige Fehler und Lösungen

  • Problem: Die Funktion gibt nicht den erwarteten Farbcode zurück.
    Lösung: Stelle sicher, dass die Zelle tatsächlich eine Hintergrundfarbe hat und nicht durch bedingte Formatierung definiert ist.

  • Problem: Nach der Verwendung der Funktion erscheinen Fehler oder #WERT!.
    Lösung: Überprüfe, ob die Zelle, die du abfragen möchtest, korrekt referenziert ist und die Zelle tatsächlich existiert.


Alternative Methoden

Es gibt auch Möglichkeiten, die Farbe zu ermitteln, ohne VBA zu verwenden. Eine häufige Methode ist die Verwendung von bedingten Formeln, um den Farbcode anhand von Kriterien zu bestimmen, die du für die bedingte Formatierung festgelegt hast. Dazu kannst du die WENN-Funktion in Kombination mit dem WERT-Befehl nutzen.

Beispiel:

=WENN(A1>10; "Grün"; WENN(A1<5; "Rot"; "Gelb"))

Diese Formel gibt die Farbe basierend auf den Werten in den Zellen zurück, jedoch nicht den tatsächlichen Farbcode.


Praktische Beispiele

Nehmen wir an, du möchtest die Zellenfarbe auslesen und die Werte in einer separaten Tabelle auflisten. Hier ist ein Beispiel für die Verwendung der oben genannten VBA-Funktion:

  1. Erstelle eine Tabelle mit den Werten, die in den Zellen in den Farben Rot, Grün und Gelb formatiert sind.
  2. Nutze die Funktion GetCellColor, um in einer neuen Tabelle die Farben abzufragen.
  3. Filtern die Ergebnisse nach Farbcode:
=WENN(GetCellColor(A1)=3; A1; "")

Dies gibt den Wert nur zurück, wenn die Zellenfarbe Rot ist (ColorIndex 3).


Tipps für Profis

  • Nutze die ColorIndex-Werte, um spezifische Farben effizient zu identifizieren.
  • Kombiniere verschiedene VBA-Funktionen, um komplexe Abfragen zu erstellen, z.B. um mehrere Farben gleichzeitig abzufragen.
  • Halte deine VBA-Prozeduren gut dokumentiert, um die Wartung und Anpassung zu erleichtern.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Hintergrundfarbe einer Zelle ohne VBA auslesen?
Antwort
Das direkte Auslesen der Hintergrundfarbe ohne VBA ist nicht möglich. Du kannst jedoch die Bedingungen, die zur Formatierung führen, in Formeln abfragen.

2. Frage
Gibt es eine Möglichkeit, die Schriftfarbe auszulesen?
Antwort
Ja, du kannst eine ähnliche VBA-Funktion wie GetCellColor erstellen, um die Schriftfarbe zu ermitteln, indem du cell.Font.ColorIndex verwendest.

3. Frage
Wie kann ich die Farben von Zellen mit bedingter Formatierung abfragen?
Antwort
Für Zellen mit bedingter Formatierung musst du die zugrunde liegenden Bedingungen verstehen und diese in deinen Formeln oder VBA-Funktionen berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige