Usuń duplikaty w Excel VBA - Łatwe makra Excel

Spisie treści

Poniżej przyjrzymy się programowi w Excel VBA że usuwa duplikaty.

Sytuacja:

W kolumnie A mamy 10 liczb. Chcemy usunąć duplikaty z tych numerów i umieścić unikalne numery w kolumnie B.

1. Najpierw deklarujemy cztery zmienne. toAdd typu Boolean, uniqueNumbers typu Integer, i typu Integer oraz j typu Integer.

Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer

2. Następnie wpisujemy pierwszy numer kolumny A do kolumny B, ponieważ pierwsza liczba jest zawsze „unikalna”.

Komórki (1, 2). Wartość = Komórki (1, 1). Wartość

3. Inicjujemy dwie zmienne. Właśnie dodaliśmy jedną liczbę do kolumny B, więc inicjujemy uniqueNumbers o wartości 1. Ustawiamy toAdd na True zakładając, że należy również dodać kolejną liczbę (niekoniecznie jest to oczywiście prawdą).

unikatowe liczby = 1
toDodaj = Prawda

Musimy ustalić, czy druga liczba jest „unikalna”, czy nie. Można to zrobić w bardzo prosty sposób. Tylko jeśli numer nie znajduje się już w kolumnie B, drugi numer należy dodać do kolumny B.

4. Musimy również sprawdzić to dla trzeciej liczby, czwartej liczby i tak dalej. W tym celu uruchamiamy pętlę For Next.

Dla i = 2 do 10

5. Teraz najważniejsza część programu. Jeśli druga liczba jest równa jednej z liczb w kolumnie B (do tej pory mamy tylko jedną unikalną liczbę), ustawiamy na Add to False, ponieważ w tym przypadku nie chcemy dodawać tej liczby! (nie jest „wyjątkowy”). W tej chwili uniqueNumbers jest nadal równe 1, ale uniqueNumbers może być całą listą. Aby sprawdzić całą tę listę, potrzebujemy kolejnej pętli For Next. Ponownie: jeśli liczba, którą chcemy dodać, jest równa jednej z liczb na tej liście, toAdd zostanie ustawione na False i numer nie zostanie dodany. Dodaj następujące wiersze kodu:

Dla j = 1 To uniqueNumbers
If Cells(i, 1).Value = Cells(j, 2).Value Then
toAdd = Fałsz
Zakończ, jeśli
Następny j

6. Tylko jeśli toAdd jest nadal True i nie jest ustawione na False, Excel VBA musi dodać numer do kolumny B. Jednocześnie zwiększamy uniqueNumbers o 1, ponieważ mamy teraz jeden unikalny numer więcej. Poniższe wiersze kodu wykonują zadanie:

Jeśli toAdd = Prawda Wtedy
Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value
unikalneNumbers = unikalneNumbers + 1
Zakończ, jeśli

7. Na koniec ustawiamy Add to True, zakładając, że należy dodać kolejną liczbę (trzecią liczbę). Znowu niekoniecznie jest to prawdą.

toDodaj = Prawda

8. Nie zapomnij zamknąć pętli.

Dalej ja

9. Umieść swoje makro w przycisku polecenia i przetestuj je.

Wynik:

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave