Tenho duas planilhas: "compilado" e "primeira coleta". O que pretendo fazer é excluir linhas da planilha "firstpickup" se o valor na coluna A também puder ser encontrado na coluna A de "compilado". "compilado" tem 42.000 linhas e "firstpickup" tem 21.000, então eu gostaria de poder apenas executar a macro e terminá-la depois de passar por todos os dados.
Aqui estão algumas opções que tentei com base em pesquisas superficiais no 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 continuou não encontrando correspondências na função "if", por isso nunca excluiu nenhuma linha, mesmo para linhas que eu sabia que tinham duplicatas.
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 sub também não teve sucesso; após a consulta "For", o depurador pularia para "end sub".
Qualquer ajuda, seja refazendo minhas tentativas anteriores ou me ajudando com uma solução diferente, seria muito apreciada.
Responder1
Você pode usar este código VBA, irá ajudá-lo a excluir linhas da planilha Firstpickup
,se os valores na coluna A corresponderem aos valores na coluna 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