Usuń zduplikowane rekordy za pomocą VBA w programie Microsoft Excel

Anonim

W tym artykule stworzymy makro do usuwania zduplikowanych rekordów z danych.

Surowe dane składają się z danych pracowników, które obejmują imię i nazwisko, wiek i płeć.

Wyjaśnienie logiczne

Stworzyliśmy makro „RemovingDuplicate”, aby usunąć zduplikowane rekordy z danych. To makro najpierw pozyskuje dane w sekwencji, a następnie dokonuje porównania między wartościami dwóch kolejnych wierszy, aby znaleźć zduplikowane rekordy.

Wyjaśnienie kodu

ActiveSheet.Sort.SortFields.Clear

Powyższy kod służy do usunięcia wcześniejszego sortowania danych.

ActiveSheet.Sort.SortFields.Add Klucz:=Zakres(Wybór.Adres), _

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

Powyższy kod służy do sortowania danych w pierwszej kolumnie w kolejności rosnącej.

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

Powyższy kod służy do zastosowania pętli wstecznej, zaczynając od ostatniego wiersza do wybranego wiersza.

ActiveSheet.Rows(i).Usuń przesunięcie:=xlUp

Powyższy kod służy do usuwania wiersza i przesuwania kursora do górnego wiersza.

Proszę postępować zgodnie z poniższym kodem!

 Option Explicit Sub RemovalDuplicate() 'Deklarowanie zmiennych Dim i As Long 'Wyłączenie aktualizacji ekranu Application.ScreenUpdating = False Range("A11").Select ActiveSheet.Sort.SortFields.Clear 'Sortowanie danych w kolejności rosnącej ActiveSheet.Sort.SortFields.Add Klucz:=Range(Selection.Address), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers z 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 'Przewijanie przez wszystkie komórki For i = ActiveSheet.Cells(Row Count, Selection.Column).End(xlUp).Row To Selection.Row + 1 Krok -1 'Porównywanie wartości dwóch sąsiadujących komórek dla zduplikowanych rekordów If ActiveSheet.Cells(i, Selection.Column).Value = ActiveSheet.Cells( (i - 1), Selection.Column).Value Then 'Usuń zduplikowany rekord ActiveSheet.Rows(i).Delete shift:=xlUp End If Next i 'Włączanie screen up daty Application.ScreenUpdating = True End Sub 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail