Menu

Compter les valeurs uniques dans Excel : UNIQUE et NB.SI

=NBVAL(UNIQUE(A2:A9)) compte combien de valeurs différentes contient A2:A9. Pour un Excel plus ancien, utilisez =SOMMEPROD(1/NB.SI(A2:A9;A2:A9)). Compter les valeurs présentes une seule fois, compter avec une condition, ignorer les cellules vides.

Chaque feuille de cette page est interactive : modifiez un nombre ou une formule et elle se recalcule.

=NBVAL(UNIQUE(A2:A9)) compte combien de valeurs différentes contient A2:A9. UNIQUE renvoie chaque valeur une fois, et NBVAL (COUNTA en anglais) compte cette liste. Il faut Excel 2021 ou Microsoft 365 ; les versions plus anciennes sont traitées plus bas. Le tableau affiche les formules sous leur forme anglaise, avec des virgules, mais vous pouvez aussi les taper comme dans un Excel français, avec des points-virgules : =NBVAL(UNIQUE(A2:A9)).

Clients différents
D2
ABCD
1CustomerUnique listCount
2AnaAna5
3BenBen
4AnaCara
5CaraDan
6BenEva
7Dan
8Ana
9Eva
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =NBVAL(UNIQUE(A2:A9))

Huit commandes viennent de cinq clients. C2 déverse la liste des noms renvoyée par UNIQUE pour que vous voyiez ce qui est compté, et D2 la compte sans avoir besoin de la liste sur la feuille. Mettez Ana en A9 et le compte tombe à 4 ; tapez un nouveau nom et il augmente.

UNIQUE ignore la casse : Ana et ana comptent pour un seul client.

Compter les valeurs uniques dans un Excel plus ancien

Excel 2019 et les versions antérieures n'ont pas UNIQUE. La formule classique est :

=SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9))

Dans un Excel français : =SOMMEPROD(1/NB.SI(A2:A9;A2:A9)).

NB.SI (COUNTIF) avec toute la plage comme critère renvoie, pour chaque ligne, le nombre de fois où la valeur de cette ligne apparaît. Un nom présent 3 fois obtient 3 sur chacune de ses lignes : 1/3 est donc ajouté trois fois et le nom totalise exactement 1. La colonne B affiche le compte de chaque ligne et la colonne C la fraction.

Comment fonctionne 1/NB.SI
E2
ABCDE
1CustomerTimes1/TimesCount
2Ana30.335
3Ben20.505.00
4Ana30.33
5Cara11.00
6Ben20.50
7Dan11.00
8Ana30.33
9Eva11.00
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =SOMMEPROD(1/NB.SI(A2:A9;A2:A9))

Les trois lignes d'Ana ajoutent chacune 0.33, les deux lignes de Ben chacune 0.50, et les trois noms uniques ajoutent 1 chacun : 5 au total, comme la SOMME de la colonne d'aide. Sur des dizaines de milliers de lignes, cette formule est lente, car NB.SI parcourt toute la plage une fois par ligne ; UNIQUE n'a pas ce coût.

Distinctes ou uniques : les valeurs présentes une seule fois

"Unique" désigne deux comptages différents. Celui ci-dessus compte les valeurs distinctes : chaque nom une fois. L'autre compte les valeurs présentes exactement une fois, comme les clients qui n'ont commandé qu'une seule fois. UNIQUE le fait avec son troisième argument, exactly_once, mis à VRAI.

Distinctes et présentes une seule fois
D3
ABCD
1CustomerCountResult
2AnaDistinct5
3BenExactly once3
4AnaExactly once, older Excel3
5Cara
6Ben
7Dan
8Ana
9Eva
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =NBVAL(UNIQUE(A2:A9;;VRAI))

Cinq clients distincts, mais seuls trois d'entre eux, Cara, Dan et Eva, ont commandé une fois. La version pour les anciens Excel compte les lignes dont le NB.SI vaut exactement 1. Si chaque valeur se répète, UNIQUE avec exactly_once renvoie #CALC! (même nom en français et en anglais) et NBVAL compte cette erreur comme 1 ; la version SOMMEPROD (SUMPRODUCT) donne 0.

Compter les valeurs uniques avec une condition

Pour compter les clients différents d'une région, filtrez d'abord les lignes, puis comptez ce qui reste. FILTRE (FILTER) garde les lignes North et UNIQUE supprime les répétitions.

Clients différents par région
E2
ABCDE
1CustomerRegionRegionCustomers
2AnaNorthNorth3
3BenSouthSouth3
4AnaNorthNorth, older Excel3
5CaraNorth
6BenNorth
7DanSouth
8AnaNorth
9EvaSouth
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =NBVAL(UNIQUE(FILTRE(A2:A9;B2:B9=D2)))

North compte cinq commandes de trois clients : Ana, Cara et Ben. E3 compte South de la même façon. E4 est la version pour Excel 2019 et les versions antérieures : NB.SI.ENS (COUNTIFS) compte chaque paire client et région, et la condition ne garde que les fractions North.

Si aucune ligne ne correspond, FILTRE renvoie #CALC!, et NBVAL compte cette erreur comme une valeur : tapez West en D2 et E2 affiche 1, pas 0. Entourer la formule de SIERREUR n'aide pas, car NBVAL ne renvoie pas d'erreur. Comptez plutôt les lignes du résultat, ce qui transmet bien l'erreur : =SIERREUR(LIGNES(UNIQUE(FILTRE(A2:A9;B2:B9="West")));0) renvoie 0.

Compter les valeurs uniques sans les cellules vides

Une cellule vide dans la plage devient une "valeur" de plus. UNIQUE la renvoie sous forme de 0 et NBVAL compte ce 0 : pour Ana, une cellule vide, Ben, Ana, une cellule vide, Cara et Ben, Excel donne :

=COUNTA(UNIQUE(A2:A8))    4   three names plus the 0 for the empty cells

Dans l'ancienne formule, une ligne vide fait renvoyer 0 à NB.SI, et 1/0 donne #DIV/0!. Retirez d'abord les cellules vides :

Une plage avec des trous
D2
ABCD
1CustomerFormulaCount
2AnaSkip blanks3
3Older Excel3
4Ben
5Ana
6
7Cara
8Ben
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =NBVAL(UNIQUE(FILTRE(A2:A8;A2:A8<>"")))

Les deux formules comptent les trois clients. FILTRE avec A2:A8<>"" retire les cellules vides avant que UNIQUE ne les voie. Dans l'ancienne formule, A2:A8&"" transforme chaque cellule vide en chaîne vide pour que NB.SI ne renvoie jamais 0, et (A2:A8<>"") donne à ces lignes un poids de 0.

Exercice : compter les produits

À vous : combien de produits ?
E2
ABCDE
1OrderProductCountResult
21001AppleProducts
31002Pear
41003Apple
51004Plum
61005Pear
71006Apple
81007Plum
91008Fig
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.

À vous : Comptez combien de produits différents apparaissent dans B2:B9. Écrivez la formule en E2.

Quelle formule pour votre Excel

CompterExcel 365 / 2021Excel 2019 et versions antérieures
Les valeurs distinctes=NBVAL(UNIQUE(A2:A9))=SOMMEPROD(1/NB.SI(A2:A9;A2:A9))
Les valeurs présentes une fois=NBVAL(UNIQUE(A2:A9;;VRAI))=SOMMEPROD(--(NB.SI(A2:A9;A2:A9)=1))
Les valeurs distinctes, avec une condition=NBVAL(UNIQUE(FILTRE(A2:A9;B2:B9="North")))=SOMMEPROD((B2:B9="North")/NB.SI.ENS(A2:A9;A2:A9;B2:B9;B2:B9))
Les valeurs distinctes, sans les cellules vides=NBVAL(UNIQUE(FILTRE(A2:A9;A2:A9<>"")))=SOMMEPROD((A2:A9<>"")/NB.SI(A2:A9;A2:A9&""))

Dans un tableau croisé dynamique, la synthèse "Nombre distinct" fait le même travail sans formule, mais seulement si le tableau croisé a été créé avec la case "Ajouter ces données au modèle de données" cochée. Pour supprimer les répétitions plutôt que les compter, voir supprimer les doublons.

Questions fréquentes

Comment compter les valeurs uniques dans Excel ?

Dans Excel 365 ou 2021, utilisez =NBVAL(UNIQUE(A2:A9)) : UNIQUE liste chaque valeur une fois et NBVAL compte la liste. Dans les versions plus anciennes, utilisez =SOMMEPROD(1/NB.SI(A2:A9;A2:A9)).

Comment compter les valeurs qui n'apparaissent qu'une fois ?

Mettez le troisième argument de UNIQUE, exactly_once, à VRAI : =NBVAL(UNIQUE(A2:A9;;VRAI)). Pour Ana, Ana, Ben, le résultat est 1, car seul Ben apparaît une fois. Dans Excel 2019 et les versions antérieures, utilisez =SOMMEPROD(--(NB.SI(A2:A9;A2:A9)=1)).

Comment compter les valeurs uniques avec une condition ?

Filtrez d'abord, puis comptez : =NBVAL(UNIQUE(FILTRE(A2:A9;B2:B9="North"))) compte les clients différents des lignes North. Si aucune ligne ne correspond, NBVAL compte l'erreur #CALC! de FILTRE comme 1 ; quand cela peut arriver, utilisez =SIERREUR(LIGNES(UNIQUE(FILTRE(A2:A9;B2:B9="North")));0).

Comment compter les valeurs uniques en ignorant les cellules vides ?

Retirez les cellules vides avant UNIQUE : =NBVAL(UNIQUE(FILTRE(A2:A9;A2:A9<>""))). Dans un Excel plus ancien, =SOMMEPROD((A2:A9<>"")/NB.SI(A2:A9;A2:A9&"")) les ignore.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER