Tengo dos hojas de trabajo: "compilado" y "primer pickup". Lo que estoy buscando hacer es eliminar filas en la hoja "firstpickup" si el valor en la columna A también se puede encontrar en la columna A de "compilado". "compilado" es 42,000 filas y "firstpickup" es 21,000, por lo que me gustaría poder ejecutar la macro y hacer que termine después de revisar todos los datos.
Aquí hay algunas opciones que probé en base a búsquedas rápidas de Google:
Sub RemoveDuplicates()
Dim rCrit As Range 'Range To Search For Duplicates
Dim rFilt As Range 'Range To Remove Duplicates
Dim lLoop As Long
Set rCrit = Worksheets("compiled").Range("A1", Worksheets("compiled").Range("A" & Rows.Count).End(xlUp))
Set rFilt = Worksheets("firstpickup").Range("A1", Worksheets("firstpickup").Range("A" & Rows.Count).End(xlUp))
For lLoop = rCrit.Rows.Count To 2 Step -1
If WorksheetFunction.CountIf(rCrit, rFilt(lLoop).Value) > 0 Then
Worksheets("firstpickup").Rows(lLoop).Delete shift:=xlUp
End If
Next lLoop
End Sub
Este sub no encontró coincidencias en la función "if", por lo que nunca eliminó ninguna fila, incluso para las filas que sabía que tenían duplicados.
Sub Removeduplicates()
Dim Row As Long
Dim FoundDup As Range
Sheets("compiled").Select
For Row = Range("A24031").End(xlUp).Row To 2 Step -1
Set FoundDup = Sheets("compiled").Range("A:A").Find(Cells(Row, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not FoundDup Is Nothing Then
Cells(Row, 1).EntireRow.Delete
End If
Next Row
End Sub
Este submarino tampoco tuvo éxito; después de la consulta "For", el depurador saltaría a "end sub".
Cualquier ayuda, ya sea reelaborando mis intentos anteriores o ayudándome con una solución diferente, sería muy apreciada.
fuente
Range("A24031").End(xlUp).Row
devuelve un valor mayor que 2? ¿Quizás poner explícitamente la hoja de trabajo antes de esoWorksheets("compiled").Range(...)...
?Respuestas:
Puede usar este código VBA, lo ayudará a eliminar filas de la hoja
Firstpickup
, si los valores de la columna A coinciden con los valores de la columna A deComplied Sheet
.fuente