Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Filter auf farbige Zellen





Frage

Guten Tag! Besteht die Möglichkeit einen Filter so zu generieren, dass z. B. nur alle Zelle mit der Füllfarbe gelb angezeigt werden? Thanx. Nina

Antwort 1 von JoeKe

Hallo Nina,

das lässt sich mit VBA realisieren.
Nachfolgender Code blendet alle Zeilen die in dem Bereich G1 bis G100 nicht die Füllfarbe Gelb haben aus.

Sub farbfilter()
Dim zelle As Range
Application.ScreenUpdating = False
For Each zelle In Range("G1:G100")
If zelle.Interior.ColorIndex <> 6 Then
zelle.EntireRow.Hidden = True
End If
Next
End Sub


Den Code kopierst du in ein Standartmodul und weist ihn einer Schaltfläche zu.
Um alle Zeilen wieder sichtbar zumachen benutzt du folgenden Code am besten auch über eine Schaltfläche.

Sub zeilen_einblenden()
Cells.EntireRow.Hidden = False
End Sub


Wenn du eine anderen Bereich oder nach einer anderen Bedngung filtern wills, muss der erste Code entsprechend geändert werden.
Ich hoffe du kommst damit zurecht, sonst melde dich nochmal.

MfG

JöKe

Antwort 2 von heutige_Frage

Funktioniert!!!
Danke!!!

Wo bekomme ich eine "Überstetzung" für den zelle.Interior.ColorIndex, damit ich auch andere Zellen filtern kann?

lg

Tina

Antwort 3 von heutige_Frage

Wie kann ich aus bestehenden Zellen den zelle.Interior.ColorIndex, ermitteln?

Tina

Antwort 4 von JoeKe

Hallo Tina,

folgender Code erstellt eine Farbtabelle mit den dazu gehörigen Indizes:

Sub Farbtabelle()
Dim i As Byte
For i = 1 To 56
If i <= 14 Then
Cells(1, i) = i
Cells(2, i).Interior.ColorIndex = i
End If
If i > 14 And i <= 28 Then
Cells(4, i - 14) = i
Cells(5, i - 14).Interior.ColorIndex = i
End If
If i > 28 And i <= 42 Then
Cells(7, i - 28) = i
Cells(8, i - 28).Interior.ColorIndex = i
End If
If i > 42 And i <= 56 Then
Cells(10, i - 42) = i
Cells(11, i - 42).Interior.ColorIndex = i
End If
Next
End Sub


Du kannst aber auch alternativ mit den Farbnamen arbeiten. Die Zeile:

If zelle.Interior.ColorIndex <> 6 Then

würde dann für Gelb so aussehen

If zelle.Interior.Color <> vbyellow Then


MfG
JöKe

Antwort 5 von heutige_Frage

Will ja nicht lästig sein, aber die müssen die Farbnamen auf englisch sein?

Wie heisst z. B. "Helles Türkis" auf englisch.
Sorry, aber ich bin da leider nicht sehr bewandert und sehr, sehr froh über Deine Hilfe.

Werde wohl besser Deinen Code verwenden.

Tina

Antwort 6 von JoeKe

Hallo Tina,

Ja die Farben müssen in englisch angegeben werden.
Bei Türkis müsstes du vbCyan angeben.
Wenn du aber mit vielen verschiedenen Farben arbeiten willst würde ich dir doch das ColorIndex Ereignis empfehlen, da es leichter und eindeutiger ist.
Wenn du den letzten Code auf einem leeren Tabellenblatt ausführst erhälst du eine Aufstellung mit allen verfügbaren Farben und den dazugehörigen Index. Die Seite kannst du dann ausdrucken und beim programmieren nutzen.

Mfg JöKe

Antwort 7 von heutige_Frage

Habe mich gestern noch ein wenig mit dem von Dir zur Verfügung gestelltem Code beschäftigt.

Musste leider feststellen, dass er nicht immer funktioniert. Ich habe da eine Tabelle mit Formeln --> =WENN(VERGLEICH(A2;A:A;0)=ZEILE();"";1) und diese beinflussen offensichtlich den Code.

Wenn ich die Spalte mit der oben erwähnten Formel lösche, funktioniert der Code, ansonsten hängt sich nach ca. 5 Minuten Excel auf.

Trotzdem vielen lieben Dank!

Tina

Antwort 8 von JoeKe

Moin Tina,

erstmal vielen Dank für deine Rückmeldung.

Eigentlich dürften Formeln den Code nicht beeinflussen, da lediglich die Zellhintergrundfarbe abgefragt wird.

MfG

JöKe

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: