Comment compter les valeurs uniques dans la plage à l’aide de VBA



Vous pouvez utiliser la syntaxe de base suivante pour compter le nombre de valeurs uniques dans une plage à l’aide de VBA :

Sub CountUnique()
    Dim Rng As Range, List As Object, UniqueCount As Long
    Set List = CreateObject("Scripting.Dictionary")
    
    'count unique values in range A2:A11
    For Each Rng In Range("A2:A11")
      If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
    Next
    
    'store unique count
    UniqueCount = List.Count
    
    'display unique count
    MsgBox "Count of Unique Values: " & UniqueCount

End Sub

Cet exemple particulier compte le nombre de valeurs uniques dans la plage A2:A11 , puis affiche le nombre dans une boîte de message.

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : compter les valeurs uniques dans la plage à l’aide de VBA

Supposons que nous ayons la liste suivante de noms d’équipes de basket-ball dans Excel :

Supposons que nous souhaitions compter le nombre de noms d’équipe uniques dans la plage A2:A11 .

Nous pouvons créer la macro suivante pour ce faire :

Sub CountUnique()
    Dim Rng As Range, List As Object, UniqueCount As Long
    Set List = CreateObject("Scripting.Dictionary")
    
    'count unique values in range A2:A11
    For Each Rng In Range("A2:A11")
      If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
    Next
    
    'store unique count
    UniqueCount = List.Count
    
    'display unique count
    MsgBox "Count of Unique Values: " & UniqueCount

End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Nombre VBA unique

La boîte de message nous indique qu’il existe 5 noms d’équipe uniques.

Nous pouvons vérifier que cela est correct en identifiant manuellement chacun des noms d’équipe uniques :

  • Mavs
  • Chaleur
  • Filets
  • Guerriers
  • rois

Il existe en effet 5 noms d’équipe uniques.

Remarque : Pour compter le nombre de valeurs uniques dans une plage différente, remplacez simplement A2:A11 dans la boucle For Each par une plage différente.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :

VBA : Comment compter les cellules avec un texte spécifique
VBA : Comment compter le nombre de lignes dans la plage
VBA : Comment écrire les fonctions COUNTIF et COUNTIFS

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *