Excel formule : compter le nombre de valeurs différentes

Résolu
smer38 Messages postés 10 Date d'inscription dimanche 23 janvier 2011 Statut Membre Dernière intervention 8 octobre 2014 - Modifié le 16 nov. 2021 à 16:16
 nono - 24 août 2022 à 15:09
Bonjour,



je cherche a compter le nombre de valeurs uniques dans une colonne. et je n'arrive pas à compter cela. Quelqu'un a t'il une idée.

merci
A voir également:

4 réponses

Beaj109562 Messages postés 2 Date d'inscription mercredi 23 septembre 2015 Statut Membre Dernière intervention 24 septembre 2015 42
Modifié le 18 janv. 2019 à 15:53
Mon commentaire à la réponse de 'g' du 3 déc. 2012 à 15:14 a été supprimé en justifiant que "Le message a été jugé obsolète.", mais cette conversation ne permet pas de savoir au final quelle est la meilleure solution! Je donne donc mon avis/résume:

La meilleure solution c'est la formule
[A] {
=SOMME(SI(A1:A10<>"";1/NB.SI(A1:A10;A1:A10)))
} (la dernière proposée dans le sujet, par tongtong)

Elle donne des comptes exacts de valeurs distinctes dans la plage de cellules pour tous les types de valeurs testées: chaines de caractères de l'alphabet, chiffres, et non-alphanumériques (+, /,...), mais aussi les valeurs d'erreur (#DIV/0!, #N/A,...) et de logique (VRAI, FAUX), et même donc la valeur cellule vide (qui n'est pas comptée comme valeur distincte).
Attention, elle peut être longue à calculer (9sec de calcul pour 50 cellules, 15sec pour 500, 25sec pour 5000, ... erreur pour 50000)

La formule secondairement proposée, par ccm81, [B] {
=SOMMEPROD(1/NB.SI(A1:A7;A1:A7))
} fonctionne aussi très bien, à condition qu'il n'y ait pas de cellules vides dans la plage recherchée, ou qu'on cherche justement à compter ce vide comme une valeur distincte:
Pour éviter qu'elle donne une valeur d'erreur (#DIV/0!) dès qu'une cellule est vide, le mieux est de remplacer les cellules vides par une valeur particulière, ex 'vide' (ou un point, voire un espace mais attention aux oublis plus distinguables). Le nombre de valeurs distinctes trouvées inclut alors bien sur cette valeur de "vide", ce qui peut etre désiré parfois. Même remarque sur la longueur de calcul.

Enfin la formule en premier, par g [C] {
=SOMME(SI(NB.SI(A1:A7;A1:A7)=1;1))
} est à oublier: elle donne des valeurs inexactes dès qu'une valeur est doublée... Il suffit de voir son compte évoluer étrangement en comptant une plage de cellules contenant un seul caractere (elle trouve 1), puis 2 fois ce meme caractère (elle trouve 0), puis 3 (0), ...
54
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024
23 sept. 2015 à 17:53
Salut tongtong



L'origine de la formule vient des forums anglophones comme le citait Laurent Longre il y a 10 ou 15 ans:

. 
.....
"2. Plage contenant tout type de valeurs
=SOMME(1/NB.SI(Plage;Plage))

Cette formule est issue des forums anglophones sur Excel.
NB.SI(Plage;Plage)

renvoie une matrice contenant le nombre de répétitions de chaque valeur à l'intérieur de la plage indiquée. Si une valeur est répétée N fois, la matrice correspondante comporte N fois le nombre N.
En faisant la somme des inverses de ces nombres, on obtient N*(1/N), soit 1 pour chacune des valeurs dupliquées. Le résultat est le nombre de valeurs uniques de la plage.
Contrairement à la formule précédente, celle-ci compte le nombre de valeurs différentes quel que soit leur type (nombre, texte...) mais la plage utilisée ne doit pas comprendre de cellules vides, à moins de contenir également au moins un nombre 0 ou qu'on la modifie ainsi :
=SOMME(SI(Plage<>"";1/NB.SI(Plage;Plage))) "....
2
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
23 sept. 2015 à 18:33
Salut michel
Et merci pour cet historique hyper-documenté.
0