Eu tenho duas planilhas: "compilado" e "firstpickup". O que estou procurando fazer é excluir linhas na planilha "firstpickup" se o valor na coluna A também puder ser encontrado na coluna A de "compilado". "compilado" tem 42.000 linhas e "primeiro levantamento" é 21.000, então eu gostaria de poder executar a macro e terminar depois de analisar todos os dados.
Aqui estão algumas opções que tentei com base em pesquisas superficiais do 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
Esse sub continuava a não encontrar correspondências na função "se", por isso nunca excluía nenhuma linha, mesmo para as 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 submarino também não teve sucesso; após a consulta "For", o depurador pularia para "end sub".
Qualquer ajuda, seja refazer minhas tentativas anteriores ou me ajudar com uma solução diferente, seria muito apreciada.
fonte
Range("A24031").End(xlUp).Row
retorna um valor maior que 2? Talvez coloque explicitamente a planilha antes disso -Worksheets("compiled").Range(...)...
?Respostas:
Você pode usar esse código VBA, ajudará você a excluir linhas da planilha
Firstpickup
, se os valores na coluna A corresponderem aos valores da coluna A deComplied Sheet
.fonte