Ajouter des valeurs uniques à l’aide de VBA dans Microsoft Excel
Dans cet article, nous allons créer une fonction définie par l’utilisateur (UDF) ou une fonction personnalisée pour ajouter des valeurs uniques dans une plage définie.
Les données brutes pour cet article se composent de nombres aléatoires dans sept échantillons différents.
Ajoutez une autre colonne pour trouver la somme des valeurs de chaque ligne.
La colonne «Total Sum» affiche la somme des nombres dans chaque ligne.
Maintenant, ajoutez une autre colonne pour trouver la somme des seuls nombres uniques dans chaque ligne. Nous avons créé une fonction définie par l’utilisateur «AddDistinctValues» pour trouver la somme des nombres uniques. Ajoutez la formule = AddDistinctValues (A11: G11) dans la cellule I11 et faites glisser la formule vers d’autres lignes.
UDF «AddDistinctValues» donnera la somme des nombres uniques dans la plage définie. Dans l’image ci-dessous, on peut facilement voir la différence entre la somme totale et la somme des nombres uniques.
Explication logique
UDF «AddDistinctValues» prend l’objet de plage comme entrée. Il ajoute des nombres uniques dans la plage d’entrée.
Pour trouver des nombres uniques dans la plage d’entrée, nous avons utilisé un objet de collection. Comme nous le savons, la collection ne peut pas stocker de valeurs en double, lorsque nous insérons des nombres dans la plage d’entrée de la collection, les numéros en double ne seront pas réinsérés dans la collection, à la place une erreur sera générée.
Pour gérer l’erreur, nous avons utilisé l’instruction «On Error Resume Next».
Cette instruction n’arrêtera pas la fonction en cas d’erreur, mais Loop passera à l’instruction suivante.
Une fois que nous avons les numéros uniques dans la collection, nous pouvons les ajouter dans un tableau.
Veuillez suivre ci-dessous pour le code
Function AddDistinctValues(InputRange As Range) As Integer 'Declaring variables Dim Rng As Range Dim UniqueValues As New Collection Dim UniqueValue As Variant 'Recalculates the function whenever calculation occur in any other cell Application.Volatile On Error Resume Next 'Adding unique values to collection from input range For Each Rng In InputRange UniqueValues.Add Rng.Value, CStr(Rng.Value) Next On Error GoTo 0 AddDistinctValues = 0 'Adding values in the collection For Each UniqueValue In UniqueValues AddDistinctValues = AddDistinctValues + UniqueValue Next End Function
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]