Por que isso está trancando? Faça um loop por todas as linhas, execute a função em duplicado, exclua a linha duplicada

O código funciona quando eu corro algumas centenas de linhas por vez, mas sempre fica em algum lugar no meio quando tento executá-lo em 10.000.

O que o código faz: Procura entradas duplicadas na coluna A, adiciona os valores nas colunas c, d e e entre as duas linhas e exclui a linha original.

Alguém pode pensar em uma maneira mais estável de fazer isso, ou me indicar por que pode estar trancando?

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

Editar: aqui está um link para um subconjunto de amostra dos dados.

Pós-edição: todas essas idéias são eficazes. A solução de Ron Rosenberg abaixo consegue lidar com ordens de magnitude mais rapidamente do que qualquer solução com a qual eu tenha mexido. Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion