web-dev-qa-db-fra.com

Comment compter le nombre de valeurs distinctes dans une plage?

J'ai un grand tableau qui est déjà organisé à l'aide de filtres, etc. J'aimerais ajouter un résumé sous certaines colonnes contenant le nombre de valeurs distinctes dans cette colonne.

Il n'y a pas de fonction =COUNTDISTINCT(A2:A100) alors que puis-je faire à la place? (Excel 2003)

Je ne peux pas utiliser exactement les réponses à cette question similaire parce que je ne veux pas modifier la table ni le filtrage. J'ai besoin d'un addition dans la feuille de calcul, pas d'un modification.

32
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

le fera sans avoir à utiliser une formule matricielle.

31
Lance Roberts

J'ai trouvé un solution ici qui semble être un moyen détourné incroyable de le résoudre. Mais bon, ça marche ...

= SOMME (IF (COUNTIF (A2: A100, A2: A100) = 0, "", 1/COUNTIF (A2: A100, A2: A100)))

puis appuyez sur Ctrl+Shift+Enter. En appuyant seulement Enter donnera le mauvais résultat.

7

J'ai trouvé deux ressources pour vous:

http://www.excelforum.com/Excel-worksheet-functions/365877-count-distinct-values.html

et

http://www.cpearson.com/Excel/Duplicates.aspx

Vous devriez pouvoir trouver une solution viable à partir de là.

1
Sux2Lose

Cet article montre ceci pour les valeurs de texte:

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

et ceci pour les valeurs numériques:

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

Cet article montre des formules similaires, mais montre également une méthode utilisant des filtres.

Compter le nombre de valeurs uniques à l'aide d'un filtre

Vous pouvez utiliser le filtre avancé pour extraire les valeurs uniques d'une colonne de données et les coller dans un nouvel emplacement. Ensuite, vous pouvez utiliser la fonction ROWS pour compter le nombre d'éléments de la nouvelle plage.

  1. Assurez-vous que la première ligne de la colonne a un en-tête de colonne.
  2. Dans le menu Données, pointez sur Filtrer, puis cliquez sur Filtre avancé.
  3. Dans la boîte de dialogue Filtre avancé, cliquez sur Copier vers un autre emplacement.
  4. Si la plage que vous comptez n'est pas déjà sélectionnée, supprimez les informations de la zone Plage de la liste, puis cliquez sur la colonne (ou sélectionnez la plage) contenant vos données.
  5. Dans la zone Copier dans, supprimez les informations de la zone ou cliquez dessus, puis cliquez sur une colonne vide dans laquelle vous souhaitez copier les valeurs uniques.
  6. Cochez la case Enregistrement unique uniquement, puis cliquez sur OK.

    Les valeurs uniques de la plage sélectionnée sont copiées dans la nouvelle colonne.

  7. Dans la cellule vide en dessous de la dernière cellule de la plage, entrez la fonction ROWS. Utilisez la plage de valeurs uniques que vous venez de copier comme argument. Par exemple, si la plage de valeurs uniques est B1: B45, entrez:
    = ROWS (B1: B45)

1
Dennis Williamson

= SUM (1/COUNTIF (A2: A100; A2: A100))

Confirmez avec Ctrl + Maj + Entrée

Pour chaque cellule, il compte le nombre de fois où il se produit et additionne les inverses de toutes ces valeurs. Supposons qu'une chaîne ou un nombre se trouve 5 fois. Son inverse est 0.2 qui est additionné 5 fois, donc 1 est ajouté. En fin de compte, il donne le nombre de valeurs différentes.

Remarque: ne fonctionne pas lorsque des blancs apparaissent!

1
user221470

= SOMME (SI (FRÉQUENCE (SI (SOUS-TOTAL DE 3, DÉCALAGE (A2: A100, ROW (A2: A100)) -ROW (A2), 0,1),), MATCH ("~" et A2: A100, A2: A100 & ", 0)), emprise (A2: A100) -ROW (A2) +1), 1))

Assurez-vous d'appuyer sur Ctrl + Maj + Entrée après avoir collé cette formule. Ceci concerne une plage de A2: A100, ajustez la plage en conséquence.

0
Vlada

Essayez ce lien. Cela montre comment compter les valeurs uniques dans une liste en omettant les cellules vides.

http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= somme (si (fréquence (correspondance (Liste, Liste, 0), correspondance (Liste, Liste, 0))> 0, 1))

Où "Liste" est votre gamme de cellules par exemple:

List = $ A $ 2: $ A $ 12 OR- Liste = offset ($ A $ 1 , match (rept ("z", 255), $ A: $ A)) -OU- List = offset ($ A $ 1, , match (valeur (rept ("9", 255)), $ A: $ A))

0
Charles Hunt