Nedenfor ser vi på et program i Excel VBA at fjerner duplikater.
Situasjon:
I kolonne A har vi 10 tall. Vi ønsker å fjerne duplikatene fra disse tallene og plassere de unike tallene i kolonne B.
1. For det første erklærer vi fire variabler. toLegg til av typen boolsk, unikNummer av typen Heltall, i av typen Heltall og j av typen Heltall.
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
2. Deretter skriver vi det første tallet i kolonne A til kolonne B siden det første tallet alltid er "unikt".
Celler (1, 2) .Value = Celler (1, 1) .Værdi
3. Vi initialiserer to variabler. Vi har nettopp lagt til ett tall i kolonne B, så vi initialiserer uniqueNumbers med verdien 1. Vi setter til Legg til i True forutsatt at det neste tallet også må legges til (dette er ikke nødvendigvis sant selvfølgelig).
uniqueNumbers = 1
toAdd = True
Vi må avgjøre om det andre tallet er "unikt" eller ikke. Dette kan gjøres på en veldig enkel måte. Bare hvis tallet ikke allerede er i kolonne B, må det andre tallet legges til i kolonne B.
4. Vi må også sjekke dette for det tredje tallet, fjerde nummeret og så videre. Vi starter en For Next loop for dette.
For i = 2 til 10
5. Nå kommer den viktigste delen av programmet. Hvis det andre tallet er lik et av tallene i kolonne B (så langt har vi bare ett unikt tall), setter vi til Legg til i Falsk fordi vi i dette tilfellet ikke vil legge til dette tallet! (det er ikke "unikt"). For øyeblikket er uniqueNumbers fortsatt lik 1, men uniqueNumbers kan være en hel liste. For å sjekke hele listen trenger vi en annen For Next loop. Igjen: hvis tallet vi vil legge til er lik et av tallene i denne listen, blir toAdd satt til False og tallet vil ikke bli lagt til. Legg til følgende kodelinjer:
For j = 1 Til uniqueNumbers
If Cells (i, 1) .Value = Cells (j, 2) .Value Then
toAdd = False
Slutt om
Neste j
6. Bare hvis toAdd fortsatt er True og ikke er satt til False, må Excel VBA legge til tallet i kolonne B. Samtidig øker vi uniqueNumbers med 1 fordi vi har ett unikt nummer mer nå. Følgende kodelinjer får jobben gjort:
Hvis toAdd = True Then
Celler (uniqueNumbers + 1, 2) .Value = Celler (i, 1) .Value
uniqueNumbers = uniqueNumbers + 1
Slutt om
7. Til slutt setter vi tilAdd to True forutsatt at neste nummer (tredje nummer) må legges til. Igjen er dette ikke nødvendigvis sant.
toAdd = True
8. Ikke glem å lukke løkken.
Neste jeg
9. Plasser makroen i en kommandoknapp og test den.
Resultat: