Warum sperrt das? Alle Zeilen durchlaufen, Funktion bei Duplikat ausführen, Duplikat löschen
Der Code funktioniert, wenn ich ein paar hundert Zeilen gleichzeitig abbeiße, hängt aber immer irgendwo in der Mitte, wenn ich versuche, ihn auf 10.000 auszuführen.
Was der Code bewirkt: Sucht nach doppelten Einträgen in Spalte A, fügt die Werte in den Spalten c, d und e zwischen den beiden Zeilen ein und löscht dann die ursprüngliche Zeile.
Kann sich jemand eine stabilere Methode vorstellen, um dies zu tun, oder mich darauf hinweisen, warum es möglicherweise blockiert?
Sub combineDelete ()
Const TEST_COLUMN As String = "A"
Dim i As Long
Dim iLastRow As Long
With ActiveSheet
iLastRow = .Cells(.Rows.Count, TEST_COLUMN).End(xlUp).Row
For i = iLastRow To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then
s = Cells(i, 3).Value
t = Cells(i - 1, 3).Value
Cells(i - 1, 3) = s + t
u = Cells(i, 4).Value
v = Cells(i - 1, 4).Value
Cells(i - 1, 4) = u + v
w = Cells(i, 5).Value
y = Cells(i - 1, 5).Value
Cells(i - 1, 5) = w + y
Cells(i, 1).EntireRow.Delete
End If
Next i
End With
End Sub
Edit: Hier ist ein Link zu einer Beispiel-Teilmenge der Daten.
Nachbearbeitung: Jede dieser Ideen ist effektiv. Die unten stehende Lösung von Ron Rosenberg bewältigt sie um Größenordnungen schneller als jede andere Lösung, an der ich gearbeitet habe. Vielen Dank