Clever-Excel-Forum

Normale Version: Zeile abwechselnd färben bei nächstem Artikel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe eine Liste mit Messpunkten zu unterschiedlichen Artikeln.
Da mal mehr und mal weniger Messpunkte zu den Artikeln vorhanden sind, möchte ich gerne zur Verbesserung der Übersichtlichkeit die Zeile irgendwie einfärben.

[attachment=44140]

Also das sich die Farbe wieder ändert wenn B sich ändert.

Gibt es da eine Möglichkeit?  Eine manuelle Färbung wäre nur Bedingt eine Lösung, da der Inhalt der Tabelle sich immer mal zwischendurch ändern kann.

MfG Mario
Es wäre hilfreich zu wissen ob es eine Begrenzte und festgelegte Menge an Bezeichnungen gibt

Wenn es nur eine begrenzte Anzahl von Bezeichnungen gibt, dann könntest Du z.Bsp. mit der bedingten Formatierung angeben, bei welcher Bezeichnung welche Farbe für die Zeile hinterlegt werden soll. Wenn das aber sehr viele Bezeichnungen sind, ist die Variante nicht sinnvoll.

Event könntest du eine Hilfsspalte eintragen die Prüft ob die Zeile vorher den gleichen Bezeichner hat.
Dann würdest du die ersten Zeilen in der Hilfsspalte z.Bsp mit einer 1 versehen, sobald der Bezeichner ein anderer ist als in der Zelle darüber eine 2 usw. Danach wieder eine 1. Das lässt sich relativ einfach über eine Wenn Abfrage realisieren.
Und dann wieder bedingte Formatierung. Wenn Hilfspalte / Zelle = 1 dann Farbe 1, wenn 2 dann Farbe 2. Zu guter letzt noch die Hilfsspalte ausblenden.

Kommst Du mit der Anleitung klar?

Gruß
Statler
Hallo, ich habe jetzt schon 43 verschiedene, und werden regelmäßig mehr.

Aber das mit der Hilfsspalte probiere ich mal.
Hallo Mario,

dazu braucht man keine Hilfsspalte und dergleichen. Die Anzahl der Begriffe spielt auch keine Rolle. Versuche es mal mit diesem Makro, (ist einer meiner Jugendsünden, geht bestimmt einfacher und kürzer).

Code:
Sub färben2()
' färbt Tabellenzeilen abhängig vom Inhalt einer Spalte ein
' Klaus-Dieter Oppermann
z = 2                                       ' Startzeile für Schleife(hier 2)
m = 0                                       ' Farbe für 1. Gruppe (0 = keine, 1 = grau)
Do While Cells(z, 1) <> ""                  ' Bedingung für Schleife (laufe solange Zelle
                                            ' einen Inhalt hat)
    If Cells(z, 1) <> Cells(z - 1, 1) Then  ' Wenn Zelle <> vorherige ...
        m = m + 1                           ' ... Schleifenzähler um 1 erhöhen
        ' m gerade Zahl?
        mark = Int(m / 2)                   ' ... Variable durch 2 teilen ...
        mmark = mark * 2                    ' ... und mit zwei multiplizieren
    End If                                  ' Ende Bedingung
' Zellen färben, wenn m gerade Zahl
If mmark = m Then                           ' wenn Variable = Schleifenzähler ...
    Range("A" & z, "F" & z).Select          ' ... Zellen selektieren
    With Selection.Interior                 ' ... Hintergrund füllen
        .ColorIndex = 15                    ' ... Füllfarbe grau
        .Pattern = xlSolid                  ' ... durchgehende Fläche
    End With                                ' Ende färben
End If                                      ' Ende färben
z = z + 1                                   ' Schleifenzähler
Loop                                        ' Wendepunkt für Schleife
End Sub                                     ' Ende des Makros
Hallo Klaus-Dieter,

durch die sofort im Code sichtbaren ausführlichen Step-by-step-Kommentare erst einmal etwas überrascht und abgelenkt, habe ich dann Deine Einleitung erst als zweites gelesen und das Stichwort Jugendsünde entdeckt. So sauber kommentierten Code findet man in den Foren nur selten. Klasse und Danke! Thumps_up

Schöne Grüße
Danke Klaus-Dieter,


funktioniert so wie ich wollte, nur musste ich doch die EDV Nummer in Spalte A verlegen, Oder kann man in dem Code einstellen das er Spalte B benutzen soll?

Aber auf jeden Fall funktioniert es so, danke.
Hallo Mario,


Zitat:funktioniert so wie ich wollte, nur musste ich doch die EDV Nummer in Spalte A verlegen, Oder kann man in dem Code einstellen das er Spalte B benutzen soll?



dazu brauchst du nur die Spaltenbezüge (rot gekennzeichnet) von 1 auf 2 ändern.  Cells(Z, 1)

@ d'r Bastler: Danke für die Blumen, wenn es die Zeit erlaubt, mache ich das öfter. (Hilfe zur Selbsthilfe)

b
hmm, naja hatte das auch probiert, aber wohl eins vergessen, da das nicht so recht funktionierte.

Nochmal Danke.
Hallo zusammen,

hier ein verbesserter Stand:

Code:
Sub färben3()
    ' färbt Tabellenzeilen abhängig vom Inhalt einer Spalte ein
    ' Klaus-Dieter Oppermann
   
    ' Variablen deklarieren
    Dim lngZeile As Long                                                ' Zähler für Schleife
    Dim mark As Integer                                                 ' Zähler zum Umfärben
    Dim mark2 As Integer                                                ' Kennung für Farbwechsel
    Dim farb As Variant                                                 ' Farbe definieren
    For lngZeile = 2 To Range("A1").End(xlDown).Row                     ' Laufe von Zeile 2 bis Listenende
        If Cells(lngZeile, 1) <> Cells(lngZeile - 1, 1) Then            ' wenn neuer Wert, ...
            mark = mark + 1                                             ' ... Zähler plus 1
            mark2 = mark Mod 2                                          ' ... Nullwert erzeugen
        End If                                                          ' Ende Auswahl
        If mark2 = 0 Then farb = 10213316 Else farb = xlNone            ' Farbe für Zeile(n) festlegen
        Range("A" & lngZeile, "F" & lngZeile).Interior.Color = farb     ' Zeile färben
    Next lngZeile                                                       ' nächste Zeile
End Sub
Hallo,

versuche es mit diesem Makro.

Bei aktiver Änderung eines Wertes in Spalte A wird das Makro ausgeführt. Es ist im Tabellenblatt im Blattnamen unter "Code anzeigen"
zu finden

Gruß Rudi