Tengo dos hojas de trabajo: "compiladas" y "primera recogida". Lo que estoy buscando hacer es eliminar filas en la hoja "primera recogida" si el valor de la columna A también se puede encontrar en la columna A de "compilado". "compilado" tiene 42.000 filas y "primera recogida" es 21.000, por lo que me gustaría poder ejecutar la macro y finalizarla después de revisar todos los datos.
Aquí hay algunas opciones que probé según búsquedas superficiales en 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 seguía sin encontrar coincidencias en la función "si", por lo que nunca eliminó ninguna fila, ni siquiera 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 "Para", el depurador saltaría a "finalizar sub".
Cualquier ayuda, ya sea reelaborando mis intentos anteriores o ayudándome con una solución diferente, sería muy apreciada.
Respuesta1
Puede utilizar este código VBA que le ayudará a eliminar filas de la hoja Firstpickup
.si los valores de la columna A coincidirán con los valores de la columna Ade Complied Sheet
.
Sub DeleRows()
Dim LR As Long, i As Long
With Sheets("Firstpickup")
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
If IsNumeric(Application.Match(.Range("A" & i).Value, Sheets("Complied").Columns("A"), 0)) Then .Rows(i).Delete
Next i
End With
End Sub