Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vergleich von Zeilen - Spaltenübergreifend

Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 11:54:21
Zeilen
Hallo liebes Forum,
in meiner Arbeit habe ich nun eine neue Herausforderung gefunden:
Ich soll in den Spalten F und G vergleichen und einfärben, und zwar nach folgendem Prinzip:
Wir beginnen mit einer Zeile ohne Hintergrundfarbe. Ändert sich die Leitungsart ODER der Querschnitt, ist die Zeile mit der Änderung und alle darauffolgenden mit gleichen Werten grau einzufärben. Tritt erneut eine Änderung in der Leitungsart ODER im Querschnitt auf, ist die Zeile mit der Änderung und alle darauffolgenden mit gleichen Werten wieder ohne Einfärbung zu gestalten.
Siehe Abbildung. Die Änderungen sind Unregelmäßig und enden mit der letzten beschriebenen Zeile in diesen Spalten.
Userbild
Ich habe ehrlich gesagt absolut keine Ahnung, wie ich das anstellen könnte.
Gibt es eine Möglichkeit, diesen Sachverhalt als VBA-Code auszuführen?
Ich danke euch vielmals!

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 12:03:20
Zeilen
Hi Tim,
ohne VBA guckst Du hier: http://www.excelformeln.de/tips.html?welcher=70
Am Einfachsten verkettest Du in einer Hilfsspalte Deine 2 Spalten und wendest dann auf die Hilfsspalte die im Link gepostete Formel für die bedingte Formatierung an.
VG, Boris

AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 12:48:45
Zeilen
Hallo Boris,
danke für deine Hilfe.
Ich vergaß zu erwähnen, dass die Abbildung nur ein Auszug der Tabelle ist. Die ganze Tabelle ist über 400 Zeilen lang.
Das nächste Problem:
Die Einfärbungen sollen nicht nur in dieser Tabelle angewendet werden, sondern später auch automatisiert auf andere Tabellen übernommen werden. Diese Tabellen unterscheiden sich dann aber in:
* der Anzahl der Positionen
* den Querschnitten
* den Leitungsarten
Hintergrund der Sache: Mein "Auftraggeber" erhält regelmäßig .txt Listen, die er in Excel einlesen und automatisiert formatieren möchte.
So bin ich dabei einen VBA-Code zu schreiben. Nur hänge ich gerade an besagter Stelle.
Ich hatte gehofft, dass man mein Problem in einem Code zusammenfassen kann nach dem Prinzip:
Vergleiche "F3+G3" mit "F4+G4"
wenn * Unterschied, dann andere Hintergrundfarbe
* kein Unterschied, dann Hintergrundfarbe beibehalten
Vergleiche "F4+G4" mit "F5+G5"
...

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 12:57:51
Zeilen
Hallo Boris,
danke für deine Hilfe.
Ich vergaß zu erwähnen, dass die Abbildung nur ein Auszug der Tabelle ist. Die ganze Tabelle ist über 400 Zeilen lang.
Das nächste Problem:
Die Einfärbungen sollen nicht nur in dieser Tabelle angewendet werden, sondern später auch automatisiert auf andere Tabellen übernommen werden. Diese Tabellen unterscheiden sich dann aber in:
* der Anzahl der Positionen
* den Querschnitten
* den Leitungsarten
Hintergrund der Sache: Mein "Auftraggeber" erhält regelmäßig .txt Listen, die er in Excel einlesen und automatisiert formatieren möchte.
So bin ich dabei einen VBA-Code zu schreiben. Nur hänge ich gerade an besagter Stelle.
Ich hatte gehofft, dass man mein Problem in einem Code zusammenfassen kann nach dem Prinzip:
Vergleiche "F3+G3" mit "F4+G4"
wenn * Unterschied, dann andere Hintergrundfarbe
* kein Unterschied, dann Hintergrundfarbe beibehalten
Vergleiche "F4+G4" mit "F5+G5"
...

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 15:56:11
Zeilen
Hi,
Vergleiche "F3+G3" mit "F4+G4"
wenn * Unterschied, dann andere Hintergrundfarbe
* kein Unterschied, dann Hintergrundfarbe beibehalten
Vergleiche "F4+G4" mit "F5+G5"

Exakt das macht die bedingte Formatierung.
Ich vergaß zu erwähnen, dass die Abbildung nur ein Auszug der Tabelle ist. Die ganze Tabelle ist über 400 Zeilen lang.
Völlig wurscht. Die Liste kann auch 10000 Zeilen lang sein.
Wenn die beiden Spalte A und B sind, dann markiere A2:B... bis nach unten und hinterlege diese Formel für die bedingte Formatierung:
=REST(SUMMENPRODUKT(N($A$1:$A1&$B$1:$B1$A$2:$A2&$B$2:$B2));2)
und weise ne Hintergrundfarbe (z.B. hellgrau) zu.
Und wenn Du das in VBA möchtest, zeichne es Dir mit dem Recorder auf.
VG, Boris

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 18:37:43
Zeilen
Hallo Boris,
Vielen Dank für deine Hilfe, ich habe allerdings noch 2 Fragen:
1. Kann ich die Formel auch auf den Vergleich zwischen 3 Spalten anwenden, indem ich sie folgendermaßen erweitere:
=REST(SUMMENPRODUKT(N($A$1:$A1&$B$1:$B1&$C$1:$C1$A$2:$A2&$B$2:$B2&$C$2:$C2));2)
Ich hab die dritte Spalte nämlich übersehen gehabt…
2. Ich würde meine Theorie aus [1.] gern selbst überprüfen, aber ich verstehe leider nicht, wie du das meinst mit „Formel hinterlegen“. Ich habe den entsprechenden Bereich markiert, und wo soll ich nun die Formel hinschreiben?
LG, Tim

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 19:43:20
Zeilen
Hi,
das ist die bedingte Formatierung - zu finden unter:
Start - Bedingte Formatierung - Neue Regel - Formel zur Ermittlung...
https://www.herber.de/bbs/user/86904.xlsx
VG, Boris

AW: Vergleich von Zeilen - Spaltenübergreifend
19.08.2013 13:37:01
Zeilen
Hallo,
@Boris: Deine Variante ist nachvollziehbar, funktioniert bei mir aber leider nur fehlerhaft, wenn ich sie auf den 3-Spalten-Vergleich umschreibe. Den Fehler habe ich auch nach langer Suche nicht finden können. Deshalb habe ich mir jetzt erst mal Doris' Variante angeschaut. Ich Danke dir aber trotzdem vielmals!
@ Doris: Danke für deine Alternative. Ich habe mir den Code angeschaut und in Groben Zügen auch verstanden und versucht, ihn auf mein Problem umzuschreiben. Sprich: Der Vergleich findet zwischen den Spalten A, F und G statt. Das ganze sieht dann so aus:
Sub Aenderung_Leitungsnummer_Leitungsart_Querschnitt()
' vergleicht die Spalten A,F und G (Leitungsnummer, Leitungsart und Querschnitt) miteinander
' färbt Zeilen bei Änderung des Inhaltes abwechselnd in grau und weiß ein
Dim Zeilen_Zahl As Integer                          ' belegte Zeilen
Dim i As Integer                                    ' Zähler aktuelle Zeile
Dim l As Integer                                    ' Zähler aktuelle Zeile - 1
Dim Farbe As Long                                   ' 0 = keine Farbe u. 15395562 = grau
Sheets("Tabelle1").Activate
Zeilen_Zahl = Cells(Rows.Count, "F").End(xlUp).Row
Farbe = 0
For i = 2 To Zeilen_Zahl
l = i - 1
If Range("A" & l) & Range("F" & l) & Range("G" & l)  Range("A" & i) & Range("F" & i) & _
Range("G" & i) Then
If Farbe = 15395562 Then Farbe = 0 Else Farbe = 15395562
End If
If Farbe = 0 Then Range("F" & i & ":G" & i).Interior.Pattern = xlNone
If Farbe = 15395562 Then Range("F" & i & ":G" & i).Interior.Color = Farbe
Next i
Range("A1").Select
End Sub

Nun möchte ich es aber noch so gestalten, dass nicht nur die Zellen der Spalten A, F und G eingefärbt werden, sondern jeweils die ganzen Zeilen, mit Ausnahme der Spalten H und J, die sollen immer weiß bleiben, weil es nur Leerspalten sind. Ich habe mit den letzten beiden If-Zeilen des Codes einiges probiert, aber es kommt immer ein Fehler dabei heraus.
Ich weiß mir nicht mehr weiter zu helfen…
Ich danke euch, für eure Geduld mit mir :D

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
18.08.2013 17:53:23
Zeilen
Hallo Tim,
Hier noch zwei Möglichkeiten über Makro die Spalten einzufärben. Mit der Variante 2 im Bsp. wollte ich Dir zeigen, wie man mit Hilfe einer eigenen Prozedur bei der Spalteauswahl variabel ist mit dem gleichen Ergebnis.
https://www.herber.de/bbs/user/86903.xlsm
Sieh's Dir an und probier es aus. (Brauchst keine Spalten für verknüpfte Zellen und musst nicht über bedingte Formatierung gehen. Kannst das Makro also auch für andere Tabellen nutzen)
Gruß Doris
PS: Kurze Antwort, ob es Dir was nützt, wäre schön.

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
19.08.2013 13:41:27
Zeilen
@ Doris: Danke für deine Alternative. Ich habe mir den Code angeschaut und in Groben Zügen auch verstanden und versucht, ihn auf mein Problem umzuschreiben. Sprich: Der Vergleich findet zwischen den Spalten A, F und G statt. Das ganze sieht dann so aus:
Sub Aenderung_Leitungsnummer_Leitungsart_Querschnitt()
' vergleicht die Spalten A,F und G (Leitungsnummer, Leitungsart und Querschnitt) miteinander
' färbt Zeilen bei Änderung des Inhaltes abwechselnd in grau und weiß ein
Dim Zeilen_Zahl As Integer                          ' belegte Zeilen
Dim i As Integer                                    ' Zähler aktuelle Zeile
Dim l As Integer                                    ' Zähler aktuelle Zeile - 1
Dim Farbe As Long                                   ' 0 = keine Farbe u. 15395562 = grau
Sheets("Tabelle1").Activate
Zeilen_Zahl = Cells(Rows.Count, "F").End(xlUp).Row
Farbe = 0
For i = 2 To Zeilen_Zahl
l = i - 1
If Range("A" & l) & Range("F" & l) & Range("G" & l)  Range("A" & i) & Range("F" & i) & _
Range("G" & i) Then
If Farbe = 15395562 Then Farbe = 0 Else Farbe = 15395562
End If
If Farbe = 0 Then Range("F" & i & ":G" & i).Interior.Pattern = xlNone
If Farbe = 15395562 Then Range("F" & i & ":G" & i).Interior.Color = Farbe
Next i
Range("A1").Select
End Sub

Nun möchte ich es aber noch so gestalten, dass nicht nur die Zellen der Spalten A, F und G eingefärbt werden, sondern jeweils die ganzen Zeilen, mit Ausnahme der Spalten H und J, die sollen immer weiß bleiben, weil es nur Leerspalten sind. Ich habe mit den letzten beiden If-Zeilen des Codes einiges probiert, aber es kommt immer ein Fehler dabei heraus.

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
19.08.2013 14:26:49
Zeilen
Hallo Tim,
versuchs mal so. Habe mal Spalte A bis Z genommen
Sub Aenderung_Leitungsnummer_Leitungsart_Querschnitt()
' vergleicht die Spalten A,F und G (Leitungsnummer, Leitungsart und Querschnitt) miteinander
' färbt Zeilen bei Änderung des Inhaltes abwechselnd in grau und weiß ein
Dim Zeilen_Zahl As Integer                          ' belegte Zeilen
Dim i As Integer                                    ' Zähler aktuelle Zeile
Dim l As Integer                                    ' Zähler aktuelle Zeile - 1
Dim Farbe As Long                                   ' 0 = keine Farbe u. 15395562 = grau
Sheets("Tabelle1").Activate
Zeilen_Zahl = Cells(Rows.Count, "F").End(xlUp).Row
Farbe = 0
For i = 2 To Zeilen_Zahl
l = i - 1
If Range("A" & l) & Range("F" & l) & Range("G" & l)  Range("A" & i) & Range("F" & i) & _
_
Range("G" & i) Then
If Farbe = 15395562 Then Farbe = 0 Else Farbe = 15395562
End If
If Farbe = 0 Then Range("A" & i & ":Z" & i).Interior.Pattern = xlNone
If Farbe = 15395562 Then
     Range("A" & i & ":G" & i).Interior.Color = Farbe
Range("I" & i).Interior.Color = Farbe
Range("K" & i & ":Z" & i).Interior.Color = Farbe
End If
Next i
Range("A1").Select
End Sub
Na dann
Gruß Doris

Anzeige
AW: Vergleich von Zeilen - Spaltenübergreifend
19.08.2013 14:59:35
Zeilen
PERFEKT!
Vielen, vielen Dank!
Hoffentlich kann ich diesen Code übergreifend auf meine beiden letzten Hürden anwenden, so wie ich es mir gedacht habe.
Ich wünsche euch eine Schöne Woche!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige