Rimuovi duplicati in Excel VBA
Di seguito vedremo un programma in Excel VBA che rimuove i duplicati.
Situazione:
In colonna A abbiamo 10 numeri. Noi vogliamo rimuovere i duplicati da questi numeri e posizionare i numeri univoci nella colonna B.
-
In primo luogo, si dichiara quattro variabili. toadd di tipo booleano, uniqueNumbers di tipo Integer, i di tipo Integer, e j di tipo Integer.
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
-
Successivamente, scrivere il primo numero della colonna A alla colonna B dal momento che il primo numero è sempre ‘unico’.
Cells(1, 2).Value = Cells(1, 1).Value
-
si inizializza due variabili. Abbiamo appena aggiunto un numero alla colonna B, quindi inizializziamo uniqueNumbers con il valore 1. Abbiamo impostato toadd True supponendo che i prossimi esigenze numerici per essere aggiunti pure (questo non è necessariamente vero, naturalmente).
uniqueNumbers = 1 toAdd = True
Abbiamo bisogno di determinare se il secondo numero è ‘unico’ o meno. Questo può essere fatto in un modo molto semplice. Solo se il numero non è già nella colonna B, il secondo numero deve essere aggiunto alla colonna B.
-
Abbiamo anche bisogno di controllare questo per il terzo numero, quarto numero, e così via. Iniziamo un ciclo For Next per questo.
For i = 2 To 10
-
Ora arriva la parte più importante del programma. Se il secondo numero è uguale a uno dei numeri nella colonna B (finora abbiamo solo un numero unico), abbiamo fissato toadd False perché in questo caso non vogliamo aggiungere questo numero! (Non è ‘unico’). Al momento uniqueNumbers è ancora uguale a 1, ma uniqueNumbers può essere un elenco intero. Per controllare tutta questa lista, abbiamo bisogno di un altro ciclo For Next. Anche in questo caso: se il numero vogliamo aggiungere è pari ad uno dei numeri in questo elenco, toadd sarà impostato su False e non sarà aggiunto il numero. Aggiungere le seguenti righe di codice:
For j = 1 To uniqueNumbers If Cells(i, 1).Value = Cells(j, 2).Value Then toAdd = False End If Next j
-
Solo se toadd è ancora vero e non impostato su False, Excel VBA deve aggiungere il numero di colonna B. Allo stesso tempo, ci incrementare uniqueNumbers da 1 perché abbiamo un numero unico di più adesso. Le seguenti righe di codice ottenere il lavoro fatto:
If toAdd = True Then Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value uniqueNumbers = uniqueNumbers + 1 End If
-
Infine, abbiamo impostato toadd True assumendo deve essere aggiunto il numero successivo (terzo numero). Anche questo non è necessariamente vero.
toAdd = True
-
Non dimenticare di chiudere il ciclo.
Next i
-
Inserire la macro in un pulsante di comando e testarlo.
Risultato: