in der Datei
https://www.herber.de/bbs/user/16809.xls
habe ich beispielhaft mein Problem geschildert.
Es geht darum zwei Arbeitsblätter miteinander zu
vergleichen. Denn täglich erhalte ich eine Liste
mit 50.000 Einträgen. Die Liste rolliert.
D.h. für 10.000 neue Einträge, die unten dazukommen,
fällt oben die gleiche Anzahl raus.
Ich möchte nun gerne die Neue Liste mit der Alten
abgleichen und die Einträge, die in der neuen Liste
nicht mehr enthalten sind, aus der Alten Liste aus-
schneiden und an´s Ende der neuen Liste einfügen.
Zur Identifikation, ob der Eintrag in der neuen Liste
nicht mehr vorkommt, kann mir die in der Spalte A
stehende Zahl dienen.
Habe mich daran schon mit einer Hilfsspalte und
diesem (zugegeben etwas hölzernen) Makro versucht :
Sub Formel()
Application.ScreenUpdating = False
Dim i As Variant
Do Until i = 50000
Range("a2").Offset(i, 1).FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-1],'1a'!C[-1]:C[27],1,FALSE))=TRUE,""Nicht vorhanden"",""Vorhanden"")"
Range("a2").Offset(i, 1).Calculate
If Range("a2").Offset(i, 1).Value = "Nicht vorhanden" Then
Range("a2").Offset(i, 1).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("B7").Select
Application.CutCopyMode = False
End If
If Range("a2").Offset(i, 1).Value <> "Nicht vorhanden" Then
Range("a2").Offset(i, 1).Clear
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub
Ergebnis : Bis er die 50.000 Zeilen durchhatte, waren wir bei der
dritten Tasse Kaffe und dann hatte ich mir die Einträge mit "Nicht
vorhanden" erst noch mit dem Autofilter rüberkopiert.
Gehts auch schneller ?
Vielen Dank
R.Schmitt