Ce didacticiel vous apprendra à remplir un tableau avec des valeurs uniques à partir d'une colonne en VBA.
Remplir le tableau avec des valeurs uniques à partir de la colonne
Prendre une liste de valeurs d'une feuille Excel dans un tableau consiste à parcourir les lignes dans Excel et à remplir le tableau.
Considérez la liste de clients suivante dans une feuille Excel.
En utilisant une boucle, nous pourrions remplir un tableau en VBA. Cependant, une boucle standard parcourra chaque ligne, y compris les lignes en double et vous vous retrouverez avec des valeurs en double dans votre tableau.
La solution consistant à parcourir les cellules et à remplir un objet Collection avec les valeurs en tant qu'objet de collection n'autorisera pas les doublons. Vous pouvez ensuite utiliser cet objet de collection pour remplir votre tableau.
1234567891011121314151617181920212223242526 | Sous-peuplerArrayUnique()Dim StrCustomers() en tant que chaîneDim Col comme nouvelle collectionDim valCell As StringDiminuer en tant qu'entierDim n en tant qu'entier'compter les lignes de la plagen = Range("A1", Range("A1").End(xlDown)).Rows.Count'Remplir la collection temporaireEn cas d'erreur Reprendre ensuitePour i = 0 à nvalCell = Range("A1").Offset(i, 0).ValeurCol.Ajouter valCell, valCellEnsuite jeErr.EffacerEn cas d'erreur GoTo 0'Redimensionner nn = nombre de col.'Redéclarer le tableauReDim StrCustomers (1 à n)'Remplir le tableau en parcourant la collectionPour i = 1 To Col.CountStrClients(i) = Col(i)Ensuite jeDebug.Print Join(StrCustomers(), vbCrLf)Fin du sous-marin |
Remplir un tableau avec des valeurs uniques - Fonction
L'exemple ci-dessus a montré une procédure qui effectuerait les actions souhaitées. Mais à la place, vous préférerez peut-être une fonction portable pour effectuer la tâche :
123456789101112131415161718192021222324 | Fonction CreateUniqueList(nStart as Long, nEnd as long) as VariantDim Col comme nouvelle collectionFaible arrTemp() Comme Chaîne de caractèresDim valCell As StringDiminuer en tant qu'entier'Remplir la collection temporaireEn cas d'erreur Reprendre ensuitePour i = 0 à nEndvalCell = Range("A" & nStart).Offset(i, 0).ValeurCol.Ajouter valCell, valCellEnsuite jeErr.EffacerEn cas d'erreur GoTo 0'Redimensionner nnEnd = Col.Count'Redéclarer le tableauReDim arrTemp(1 à nEnd )'Remplir le tableau temporaire en parcourant la collectionPour i = 1 To Col.CountarrTemp(i) = Col(i)Ensuite je'retourne le tableau temporaire au résultat de la fonctionCréerListeUnique = arrTemp()Fonction de fin |
Pour utiliser la fonction, vous devrez l'appeler à partir d'une sous-procédure :
123456789 | Tableau de sous-peuplement()Dim StrCustomers() en tant que chaîneDim strCol comme collectionDim n As Long'compter les lignes de la plagen = Range("A1", Range("A1").End(xlDown)).Rows.Count'exécute la fonction pour créer un tableau de valeurs uniquesstrCustomers() = CreateUniqueList(1,n)Fin du sous-marin |