Não é necessário reinventar a roda.
Dados > Remover duplicados > Selecione as colunas para comparar > OK
Estou procurando há algum tempo, mas não encontrei uma resposta, então pensei em postar.
Nãoconsigoescrevercódigos,mastenteiusaroseguinte:
SubDeleteDuplicate()DimcurrentAsStringActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
current = ActiveCell.Address
ActiveCell.Offset(1, 0).Activate
Do While ActiveCell.Value <> ""
If (ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) Then
ActiveSheet.Rows(ActiveCell.Row).Delete
Else
ActiveCell.Offset(1, 0).Activate
End If
Loop
ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub
Basicamente, usando o exemplo que eu vinculei acima, isso significa percorrer as linhas inteiras pelas colunas, e se houver linhas inteiras iguais, uma das duplicatas será excluída.
Gostaria de saber se existe uma maneira melhor de fazer isso quando, em vez de 3 colunas, há cerca de 18 colunas e 10.0000 linhas.
Tags duplicate microsoft-excel vba