VBA - Rimuovi i duplicati dall'array

Questo tutorial ti insegnerà come rimuovere i duplicati da un array in VBA.

Rimuovi duplicati

Il modo più semplice per rimuovere i duplicati da un array VBA consiste nell'assegnare i valori dell'array a una raccolta VBA e quindi restituire i valori a un array. Le raccolte non consentono valori duplicati e quindi utilizzando una raccolta, possiamo rimuovere i duplicati da un array. Abbiamo creato una funzione per eseguire questa attività:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Funzione ArrayRemoveDups(MyArray As Variant) As VariantDim nFirst As Long, nLast As Long, i As LongDim item As StringDim arrTemp() As StringDim Coll come nuova collezione"Ottieni la prima e l'ultima posizione dell'array"nFirst = LBound(MyArray)nLast = UBound(MyArray)ReDim arrTemp (da nFirst a nLast)"Converti array in stringa"Per i = nPrimo in nUltimoarrTemp(i) = CStr(MyArray(i))Avanti io"Popola raccolta temporanea"In caso di errore Riprendi AvantiPer i = nPrimo in nUltimoColl.Add arrTemp(i), arrTemp(i)Avanti ioErr.ClearIn caso di errore Vai a 0"Ridimensiona array"nLast = Coll.Count + nFirst - 1ReDim arrTemp (da nFirst a nLast)"Popola array"Per i = nPrimo in nUltimoarrTemp(i) = Coll(i - nPrimo + 1)Avanti io"Matrice di output"ArrayRemoveDups = arrTempFine funzioneSub ArrTest()Dim strNames (da 1 a 4) come stringaDim outputArray() As StringDim I As LongOggetto scuro come variante'Imposta i valori iniziali dell'arraystrNames(1) = "Shelly"strNames(2) = "Steve"strNames(3) = "Neema"strNames(4) = "Steve"'Funzione Dup Chiamata'outputArray = ArrayRemoveDups(strNames)'Emetti i valori nella finestra immediata (CTRL + G)Per ogni elemento in outputArrayDebug.Stampa elementoArticolo successivoFine sottotitolo

Nota: nell'esempio abbiamo forzato l'inizio del nostro Array da 1 (non da 0). Se il tuo array inizia da 0 dovrai modificare leggermente il codice.

Si noti che convertiamo il contenuto dell'array in una stringa. Se necessario, è possibile riconvertire le stringhe in numeri interi al termine del processo.

wave wave wave wave wave