¿Por qué está bloqueando esto? Recorrer todas las filas, realizar funciones en duplicado, eliminar fila duplicada
El código funciona cuando muerdo un par de cientos de filas a la vez, pero siempre se cuelga en algún lugar en el medio cuando intento ejecutarlo en 10,000.
Lo que hace el código: Busca entradas duplicadas en la columna A, agrega los valores en las columnas c, dye entre las dos filas y luego elimina la fila original.
¿Alguien puede pensar en una forma más estable de hacer esto, o señalarme por qué podría estar bloqueando?
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: aquí hay un enlace a un subconjunto de muestra de los datos.
Post-edición: cada una de estas ideas es efectiva. La solución de Ron Rosenberg a continuación se las arregla para manejarlo en órdenes de magnitud más rápido que cualquier solución con la que jugué. ¡Gracias!