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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage