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: