AW: Tabellenblaetter vergleichen mit VBA
06.07.2018 18:49:59
Barbaraa
@ Bernd:
Meiner Meinung nach kann hier Application.Match nicht sinnvoll angewendet werden, denn es wird ja Zelle A mit Zelle 1, Zelle B mit Zelle 2, Zelle C mit Zelle 3 usw. verglichen und nicht Zelle A mit den Zellen 1, 2, 3.
Oder habe ich da was nicht verstanden?
@ Matto:
Hatte einen kleinen Fehler in
wsN.Cells(lNZeile, lSpalte).Resize(1, lNSpalteMax).Copy
Den habe ich ausgebessert. Der Code sieht nun so aus:
Sub Matto0706()
Dim wsA As Worksheet
Dim wsN As Worksheet
Dim lAZeile As Long
Dim lAZeileMax As Long
Dim lNZeile As Long
Dim lNZeileMax As Long
Dim lNSpalteMax As Long
Dim lSpalte As Long
Set wsA = Worksheets("ListeAlt")
Set wsN = Worksheets("ListeNeu")
lAZeileMax = wsA.Range("A1").CurrentRegion.Rows.Count
lNZeileMax = wsN.Range("A1").CurrentRegion.Rows.Count
lNSpalteMax = wsN.Range("A1").CurrentRegion.Columns.Count
For lNZeile = 2 To lNZeileMax
For lAZeile = 2 To lAZeileMax
For lSpalte = 1 To lNSpalteMax
If wsN.Cells(lNZeile, lSpalte) wsA.Cells(lAZeile, lSpalte) Then Exit For
Next lSpalte
If lSpalte > lNSpalteMax Then Exit For
Next lAZeile
If lAZeile > lAZeileMax Then
wsN.Cells(lNZeile, 1).Resize(1, lNSpalteMax).Copy _
wsA.Cells(lAZeileMax + 1, 1)
lAZeileMax = lAZeileMax + 1
End If
Next lNZeile
With wsA.Range("A1").CurrentRegion
.Sort Header:=xlYes, _
key1:=.Range("A1"), order1:=xlAscending, _
key2:=.Range("C1"), order2:=xlAscending
End With
End Sub
Am Schluss wird nach Spalte A und C sortiert.
Noch ein Tipp, wenn man händisch schnell nach mehreren Kriterien sortieren will:
Stelle Dich in eine Zelle der Sortierspalte C. Nicht mehrere Zellen markieren, sonst wird nur in diesem Bereich sortiert!
Menü Start, ganz rechts "Sortieren und Filtern", "Nach Größe sortieren".
Dann gehe in eine Zelle in Spalte A, dann "Nach Größe sortieren".
Der Trick ist, dass Du in umgekehrter Spaltenreihenfolge, also erst C, dann A, sortierst.
Das geht schneller als "Benutzerdefiniertes Sortieren", wo man mühevoll die Sortierspalten eingibt.
OK?
LGB