AW: Vergleichen und Verschieben von Zeilen
26.05.2025 22:00:59
daniel
Hi
Beispieldatei wäre schön, aber ich probiers mal ohne.
Tabellenaufbau wie beschrieben, Teil 1 von Spalte A-M, Teil 2 von Spalte N-S
nicht wie beschrieben aber Standard: Zeile 1 ist Überschrift, ab Zeile 2 dann Daten.
zum Code, ich würde ihr die Zeilen nicht mit Einfügen verschieben, sondern ID-Nummern verwenden (wegen der Mehrfach vorkommenden Nummern, diese müssen eindeutig werden) und dann sortieren.
hier der Code dazu, du solltest im Einzelstepmodus durchgehen und anschauen, was passiert.
Sub test()
Dim x
Dim rng1 As Range
Dim rng2 As Range
Columns(14).Resize(, 3).Insert
Columns(1).Resize(, 2).Insert
Range("c1").CurrentRegion.Sort Key1:=Range("C1"), order1:=xlAscending, Header:=xlYes
Range("s2").CurrentRegion.Sort Key1:=Range("s2"), order1:=xlAscending, Header:=xlYes
For Each x In Array("c1", "s1")
With Range(x).CurrentRegion.Offset(1, -2).Resize(, 2)
.Columns(1).FormulaR1C1 = "=IF(RC[2]=R[-1]C[2],R[-1]C+1,1)"
.Columns(2).FormulaR1C1 = "=IF(RC[1]="""","""",RC[1]&Text(RC[-1],""-0000""))"
.Formula = .Value
End With
Next
Set rng1 = Range(Cells(2, "B"), Cells(2, "B").End(xlDown))
Set rng2 = Range(Cells(2, "R"), Cells(2, "R").End(xlDown))
rng1.Copy rng2.Offset(rng2.Cells.Count, 0)
rng2.Copy rng1.Offset(rng1.Cells.Count, 0)
rng1.EntireColumn.RemoveDuplicates 1, xlYes
rng2.EntireColumn.RemoveDuplicates 1, xlYes
Range("C1").CurrentRegion.Sort Key1:=Range("b1"), order1:=xlAscending, Header:=xlYes
Range("S1").CurrentRegion.Sort Key1:=Range("R1"), order1:=xlAscending, Header:=xlYes
Range("P:R").Delete
Range("A:B").Delete
End Sub
Gruß Daniel