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.

ArrowRawData

Ajoutez une autre colonne pour trouver la somme des valeurs de chaque ligne.

ArrowTotal

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.

ArrowUniqueNoSum

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]