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 |