Exclua registros duplicados usando VBA no Microsoft Excel

Anonim

Neste artigo, criaremos uma macro para remover registros duplicados dos dados.

Os dados brutos consistem em dados do funcionário, que incluem Nome, Idade e Sexo.

Explicação lógica

Criamos uma macro “RemovingDuplicate” para remover registros duplicados dos dados. Esta macro origina primeiramente os dados em uma sequência e, em seguida, faz a comparação entre os valores de duas linhas consecutivas para descobrir registros duplicados.

Explicação do código

ActiveSheet.Sort.SortFields.Clear

O código acima é usado para remover qualquer classificação anterior dos dados.

ActiveSheet.Sort.SortFields.Add Key: = Range (Selection.Address), _

SortOn: = xlSortOnValues, Order: = xlAscending, DataOption: = xlSortTextAsNumbers

O código acima é usado para classificar os dados na primeira coluna em ordem crescente.

Para i = ActiveSheet.Cells (Rows.Count, Selection.Column) .End (xlUp) .Row To Selection.Row + 1 Step -1

O código acima é usado para aplicar o loop reverso, começando da última linha até a linha selecionada.

ActiveSheet.Rows (i) .Delete shift: = xlUp

O código acima é usado para excluir uma linha e mover o cursor para a linha superior.

Siga abaixo para o código

 Option Explicit Sub RemovingDuplicate () 'Declarando variáveis ​​Dim i As Long' Desativando atualizações de tela Application.ScreenUpdating = False Range ("A11"). Selecione ActiveSheet.Sort.SortFields.Clear 'Classificando dados em ordem crescente ActiveSheet.Sort.SortFields.Add Chave: = Range (Selection.Address), _ SortOn: = xlSortOnValues, Order: = xlAscending, DataOption: = xlSortTextAsNumbers With ActiveSheet.Sort .SetRange Range (Selection.Offset (1, 0), ActiveSheet.Cells (Rows.Count, Selection.End (xlToRight) .Column) .End (xlUp)) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'Looping por todas as células For i = ActiveSheet.Cells (Linhas. Count, Selection.Column) .End (xlUp) .Row To Selection.Row + 1 Passo -1 'Comparando o valor de duas células adjacentes para registros duplicados If ActiveSheet.Cells (i, Selection.Column) .Value = ActiveSheet.Cells ( (i - 1), Selection.Column) .Value Then 'Exclua o registro duplicado ActiveSheet.Rows (i) .Delete shift: = xlUp End If Next i' Habilitando a tela para cima datas Application.ScreenUpdating = True End Sub 

Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.

Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail