VBA - Popola array con valori univoci dalla colonna

Questo tutorial ti insegnerà come popolare un array con valori univoci da una colonna in VBA.

Popola array con valori univoci dalla colonna

Prendere un elenco di valori da un foglio Excel in un array è una questione di scorrere le righe in Excel e popolare l'array.

Considera il seguente elenco di clienti in un foglio Excel.

Usando un ciclo, potremmo popolare un array in VBA. Tuttavia, un ciclo standard scorrerà ogni riga, incluse le righe duplicate e ti ritroverai con valori duplicati nel tuo Array.

La soluzione per scorrere le celle e popolare un oggetto Collection con i valori come oggetto Collection non consentirà duplicati. Puoi quindi utilizzare quell'oggetto di raccolta per popolare il tuo array.

1234567891011121314151617181920212223242526 SottopopolazioneUniqueArray()Dim StrCustomers() As StringDim Col come nuova collezioneDim valCell As StringDim i As IntegerDim n As Integer'conta le righe nell'intervallon = Intervallo ("A1", Intervallo ("A1"). Fine (xlGiù)). Righe. Conteggio"Popola raccolta temporanea"In caso di errore Riprendi AvantiPer i = 0 a nvalCell = Range("A1").Offset(i, 0).ValueCol.Add valCell, valCellAvanti ioErr.ClearIn caso di errore Vai a 0'Ridimensiona nn = Conteggio Col.'Ridichiara matriceReDim StrClienti(da 1 a n)"Popola Array scorrendo la raccolta"Per i = 1 a Col.CountStrCustomers(i) = Col(i)Avanti ioDebug.Print Join(StrCustomers(), vbCrLf)Fine sottotitolo

Popola array con valori univoci - Funzione

L'esempio sopra ha mostrato una procedura che eseguirebbe le azioni desiderate. Ma invece potresti preferire una funzione portatile per eseguire l'attività:

123456789101112131415161718192021222324 Funzione CreateUniqueList(nStart as Long, nEnd as long) as VariantDim Col come nuova collezionefioco arrTemp() Come CordaDim valCell As StringDim i As Integer"Popola raccolta temporanea"In caso di errore Riprendi AvantiPer i = 0 a nEndvalCell = Range("A" & nStart).Offset(i, 0).ValueCol.Add valCell, valCellAvanti ioErr.ClearIn caso di errore Vai a 0'Ridimensiona nnEnd = Conteggio Col.'Ridichiara matriceReDim arrTemp(da 1 a fine)'Popola l'array temporaneo eseguendo un ciclo nella raccoltaPer i = 1 a Col.CountarrTemp(i) = Col(i)Avanti io'restituire l'array temporaneo al risultato della funzioneCreateUniqueList = arrTemp()Fine funzione

Per utilizzare la funzione, dovrai chiamarla da una procedura secondaria:

123456789 SubPopolaArray()Dim StrCustomers() As StringDim strCol come collezioneDim n As Long'conta le righe nell'intervallon = Intervallo ("A1", Intervallo ("A1"). Fine (xlGiù)). Righe. Conteggio'esegui la funzione per creare un array di valori univocistrCustomers() = CreateUniqueList(1,n)Fine sottotitolo
wave wave wave wave wave