Herbers Excel-Forum - das Archiv

Zeilen nach Bedingung Farbig

nach unten

Betrifft: Zeilen nach Bedingung Farbig
von: Dom

Geschrieben am: 04.08.2021 15:36:49

Hallo Zusammen,
ich habe eine Tabelle mit 9 Spalten:
Pro | Name | ID | App | DOC | CR | Version | VF | GNC
es soll, wenn in der Spalte G (Version) der Wert 1.0 steht, die Spalte F (CR) sowie Spalte G (Version) für alle Zeilen der Inhalt mit grüner Textfarbe geändert werden.
also wenn in Spalte G der Wert 1.0 steht dann ändere die Schriftfarbe, der Werte in den Zeilen, für Spalte G und F auf grün.
vielen Dank im Voraus

nach oben  nach unten

Betrifft: AW: nutze die bedingte Formatierung ...
von: neopa C
Geschrieben am: 04.08.2021 15:43:17
Hallo Dom,
... mehr dazu findest Du z.B. hier: https://www.online-excel.de/excel/singsel.php?f=74 und ff.
Gruß Werner
.. , - ...

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: SF
Geschrieben am: 04.08.2021 15:43:53
Hola,
als Formel in der bedingten Formatierung:
=$G2="1.0"
Gruß,
steve1da

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom

Geschrieben am: 04.08.2021 16:07:54
Danke für den Link
ich hab das Mal versucht zu schreiben nur es klappt leider nicht :(
Sub Version()
Dim lngZeile As Long
Dim lngZeileMax As Long
With Sheet1
lngZeileMax = .Range("G" & .Rows.Count).End(xlUp).Row
For lngZeile = 4 To lngZeileMax
If .Range("G" & lngZeile).Value = "1.0" Then
.Rows(lngZeile).Font.Color = -11480942
End If
Next lngZeile
End With
End Sub

nach oben  nach unten

Betrifft: und warum nicht mit bedingter Formatierung? o.w.T.
von: Werner
Geschrieben am: 04.08.2021 16:16:06

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Charly CNX

Geschrieben am: 05.08.2021 09:48:04
Hi Dom
Meine VBA Kenntnisse sind zwar sehr bescheiden, aber versuch mal so.
Bereich kannst du ja anpassen.
Sub Test_Version()
Dim cell As Object
Application.ScreenUpdating = False
With Sheets(1)
For Each cell In .Range("G4:G" & .Cells(Rows.Count, 7).End(xlUp).Row)
If .Range(.Cells(cell.Row, 1), .Cells(cell.Row, 26)).Interior.Color = -11480942 Then
.Range("A4:Z" & .Cells(Rows.Count, 7).End(xlUp).Row).Interior.Color = xlNone
End If
If cell = "1.0" Then .Range(.Cells(cell.Row, 1), .Cells(cell.Row, 26)).Interior.Color = -11480942
Next cell
End With
End Sub
Gruß Charly

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Pierre

Geschrieben am: 05.08.2021 10:20:43
Hallo Dom,
1.
With Sheet1
heißt

With Sheets(1)
2. willst du nun die gesamte Zeile grün haben oder nur F & G?
Wenn du die gesamte Zeile färben willst, dann würde der Code an sich bis auf die Änderung unter 1. passen. Wenn wirklich nur F & G gefärbt werden sollen, dann brauchst du noch eine weitere kleine Anpassung:
If .Range("G" & lngZeile).Value = "1.0" Then
.Rows(lngZeile).Font.Color = -11480942
wird zu:
If .Range("G" & lngZeile).Value = "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.Color = -11480942
3. würde ich vielleicht noch ein ElseIf einbauen, damit die Schriftfarbe wieder schwarz wird, wenn der Eintrag 1.0 aus Spalte G gelöscht bzw. verändert wird. Ist das gewünscht? Wenn ja, dann einfach nach deinem If-Block nochmal den Gleichen mit ElseIf einfügen, nur hier nicht Value = sondern Value <>. Hier natürlich den Colorcode ändern.
Gruß Pierre
PS: Nächstes Mal vielleicht direkt mitteilen, dass du die Sache gerne über VBA lösen willst ;-)

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom

Geschrieben am: 06.08.2021 10:50:44
Hallo erstmal Danke das klappt soweit :)
jetzt habe ich noch ein Frage:
in meiner Tabelle in Spalte F steht cancelled: mit unterschiedlichem Text
Jedes Mal wenn in der Zeile das Keywort cancelled steht soll die Formatierung durchgeführt werden.
Nur wie schreib ich das in den Code ?
Beispiel :
cancelled: obsolete
cancelled: obsolete, replaced
cancelled: ....
Sub Version()
Dim lngZeile As Long
Dim lngZeileMax As Long
With Sheets(1)
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 1 To lngZeileMax
If .Range("F" & lngZeile).Value = "*??????cancelled*????" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.Colorindex = 3
End If
Next lngZeile
End With
End Sub

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: GerdL
Geschrieben am: 06.08.2021 11:15:01
Moin,
zwei der Möglichkeiten:
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
If Instr(.Cells(lngZeile, 6), "cancelled") > 0 Then 
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom

Geschrieben am: 06.08.2021 11:26:15
Danke :)
wie kann ich die beiden Sub's in eine schreiben ?
Wenn in der Spalte 7, in den Zeilen "1.0" steht dann wird der Text in Spalte 6 und 7 grün formatiert.
Wenn in der Spalte 6 das KeyWort cancelled steht dann wird der Text in Spalte 6 und 7 rot formatiert.
Sub Version()
Dim lngZeile As Long
Dim lngZeileMax As Long
With Sheets(1)
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 1 To lngZeileMax
If .Cells(lngZeile, 7).Value Like "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.Color = -11489280
End If
Next lngZeile
End With
End Sub
Sub Version2()
Dim lngZeile As Long
Dim lngZeileMax As Long
With Sheets(1)
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 1 To lngZeileMax
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3
End If
Next lngZeile
End With
End Sub

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Pierre

Geschrieben am: 06.08.2021 11:35:47
Hallo Dom,
ohne Test, sollte aber gehen:
If .Cells(lngZeile, 7).Value Like "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.Color = -11489280
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3
End If
End If
Das muss in deinem 1. Code zwischen die For-Next-Schleife, der Rest bleibt so stehen wie es ist.
Übrigens würde ich persönlich mich für eines entscheiden, entweder Color oder ColorIndex ;-)
Möchtest du meinen Vorschlag bzgl. Farblöschung nicht umsetzen? Musst du natürlich auch nicht, ich sehe diesen nur nicht in deinem Code.
Gruß Pierre

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom

Geschrieben am: 06.08.2021 12:46:35
Danke Pierre :)
das mit dem ifelse klappt noch nicht. Bekomme einen compile Fehler <>
Sub formatierung()
Dim lngZeile As Long
Dim lngZeileMax As Long
With Sheets(1)
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 1 To lngZeileMax
If .Cells(lngZeile, 7).Value Like "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 10
ifElse
.Cells(lngZeile, 7).Value <> "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1
End If
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3
.Range("B" & lngZeile).Font.ColorIndex = 3
End If
Next lngZeile
End With
End Sub

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Pierre

Geschrieben am: 06.08.2021 13:05:32
Wie kommst du darauf, den Code so aufzubauen? o.O
Sub Version()
Dim lngZeile As Long
Dim lngZeileMax As Long
With Sheets(1)
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 1 To lngZeileMax
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3  'rot
ElseIf .Cells(lngZeile, 6).Value <> "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
If .Cells(lngZeile, 7).Value Like "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 43  'grün!
ElseIf .Cells(lngZeile, 7).Value <> "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
End If
End If
Next lngZeile
End With
End Sub
Versuch es so. Für mich übersichtlicher ist es (da der Code ja nun keine 100.000 Zeilen hat), die If-Blöcke zu trennen:
Würde dann so aussehen:
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3  'rot
ElseIf .Cells(lngZeile, 6).Value <> "*cancelled*" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
End If
If .Cells(lngZeile, 7).Value Like "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 43  'grün!
ElseIf .Cells(lngZeile, 7).Value <> "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
End If
Ob das jetzt mit den Jokern und dem Like funktioniert, weiß ich nicht, habe ich nicht getestet!
Gruß Pierre
PS: Das heißt, wie du fett gedruckt sehen kannst, ElseIf und nicht IfElse!

nach oben  nach unten

Betrifft: noch etwas:
von: Pierre

Geschrieben am: 06.08.2021 13:08:39
Entscheide dich am Besten für entweder
Cells(lngZeile, 6)
ODER

Range("F" & lngZeile)
Ich bin nur zu faul, das für dich zu ändern ;-)

nach oben  nach unten

Betrifft: AW: Schrift in Zellen nach Bedingung farbig
von: GerdL
Geschrieben am: 06.08.2021 13:59:22
Moin
Sub Unit()
Dim lngZeile As Long
With Sheets(1)
.Columns("F:G").Font.ColorIndex = 1
For lngZeile = 1 To Application.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, .Cells(.Rows.Count, 7).End(xlUp).Row)
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
.Cells(lngZeile, 6).Resize(1, 2).Font.ColorIndex = 3
ElseIf .Cells(lngZeile, 7).Text = "1.0" Then
.Cells(lngZeile, 6).Resize(1, 2).Font.Color = -11480942
End If
Next lngZeile
End With
End Sub
Gruß Gerd
Excel-Beispiele zum Thema "Zeilen nach Bedingung Farbig"
Zeilenhöhe in cm festlegen Summe gefilterter Zeilen
Zeilenumbruch Leere Zeilen löschen
Spalten/Zeilen aus- und einblenden Zeilenumbruch in Formel erzwingen
Zeilen und Spalten über ein Drehfeld ein- und ausblenden Alle Kopf-/Fußzeilen-Festlegungen löschen
Fußzeilen beim Öffnen eintragen Zellinhalte zeilenweise sortieren