Cela ressemble à un simple tableau croisé dynamique pour apprendre. Je voudrais faire un décompte des valeurs uniques pour une valeur particulière sur laquelle je regroupe.
Par exemple, j'ai ceci:
ABC 123
ABC 123
ABC 123
DEF 456
DEF 567
DEF 456
DEF 456
Ce que je veux, c'est un tableau croisé dynamique qui me montre ceci:
ABC 1
DEF 2
Le tableau croisé dynamique simple que je crée me donne simplement ceci (un compte du nombre de lignes):
ABC 3
DEF 4
Mais je veux plutôt le nombre de valeurs uniques.
Ce que j'essaie vraiment de faire, c'est de savoir quelles valeurs de la première colonne n'ont pas la même valeur dans la deuxième colonne pour toutes les lignes. En d'autres termes, "ABC" est "bon", "DEF" est "mauvais"
Je suis sûr qu'il existe un moyen plus simple de le faire, mais j'ai pensé que j'essaierais le tableau croisé dynamique ...
la source
Réponses:
Insérez une 3e colonne et dans la cellule
C2
collez cette formuleet copiez-le. Créez maintenant votre pivot basé sur la 1ère et la 3ème colonne. Voir l'instantané
la source
=IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)
(appuyez sur Ctrl-Maj-Entrée lors de la saisie de la formule afin qu'elle s'acquiert{}
autour d'elle).MISE À JOUR: Vous pouvez le faire maintenant automatiquement avec Excel 2013. J'ai créé cela comme une nouvelle réponse car ma réponse précédente résout en fait un problème légèrement différent.
Si vous disposez de cette version, sélectionnez vos données pour créer un tableau croisé dynamique et, lorsque vous créez votre tableau, assurez-vous que la case à cocher "Ajouter ces données au modèle de données" est cochée (voir ci-dessous).
Ensuite, lorsque votre tableau croisé dynamique s'ouvre, créez vos lignes, colonnes et valeurs normalement. Cliquez ensuite sur le champ dont vous souhaitez calculer le nombre distinct et modifiez les paramètres de valeur de champ:
Enfin, faites défiler jusqu'à la toute dernière option et choisissez «Distinct Count».
Cela devrait mettre à jour les valeurs de votre tableau croisé dynamique pour afficher les données que vous recherchez.
la source
J'aimerais ajouter une option supplémentaire au mélange qui ne nécessite pas de formule, mais qui pourrait être utile si vous devez compter des valeurs uniques dans l'ensemble sur deux colonnes différentes. En utilisant l'exemple d'origine, je n'avais pas:
et veulent qu'il apparaisse comme:
Mais quelque chose de plus comme:
et voulait qu'il apparaisse comme:
J'ai trouvé le meilleur moyen d'obtenir mes données dans ce format, puis de pouvoir les manipuler davantage, c'était d'utiliser ce qui suit:
Une fois que vous sélectionnez «Total cumulé dans», choisissez l'en-tête de l'ensemble de données secondaire (dans ce cas, il s'agirait de l'en-tête ou du titre de colonne de l'ensemble de données qui comprend 123, 456 et 567). Cela vous donnera une valeur maximale avec le nombre total d'éléments dans cet ensemble, dans votre ensemble de données principal.
J'ai ensuite copié ces données, les ai collées en tant que valeurs, puis je les ai placées dans un autre tableau croisé dynamique pour les manipuler plus facilement.
Pour info, j'avais environ un quart de million de lignes de données, donc cela fonctionnait beaucoup mieux que certaines des approches de formule, en particulier celles qui essaient de comparer entre deux colonnes / ensembles de données car cela n'arrêtait pas de planter l'application.
la source
J'ai trouvé que l'approche la plus simple consiste à utiliser l'
Distinct Count
option ci-dessousValue Field Settings
( clic gauche sur le champ dans leValues
volet). L'option pour seDistinct Count
trouve tout en bas de la liste.Voici l'avant (TOP; normal
Count
) et après (BOTTOM;Distinct Count
)la source
Voir les objets uniques de Debra Dalgleish
la source
Il n'est pas nécessaire que la table soit triée pour que la formule suivante renvoie un 1 pour chaque valeur unique présente.
en supposant que la plage de tableau pour les données présentées dans la question est A1: B7 entrez la formule suivante dans la cellule C1:
Copiez cette formule sur toutes les lignes et la dernière ligne contiendra:
Il en résulte un 1 renvoyé la première fois qu'un enregistrement est trouvé et 0 pour toutes les fois par la suite.
Additionnez simplement la colonne dans votre tableau croisé dynamique
la source
=IF(COUNTIF($B$1:$B1,B1),1,0)
- de cette façon, countif n'est exécuté qu'une seule fois!Mon approche de ce problème était un peu différente de ce que je vois ici, donc je vais partager.
Remarque: j'aimerais inclure des images pour rendre cela encore plus facile à comprendre mais je ne peux pas car c'est mon premier message;)
la source
La réponse de Siddharth est formidable.
Cependant , cette technique peut poser problème lorsque vous travaillez avec un grand ensemble de données (mon ordinateur s'est figé sur 50 000 lignes). Quelques méthodes moins gourmandes en ressources processeur:
Contrôle d'unicité unique
Utilisez une formule qui examine moins de données
Plusieurs contrôles d'unicité
Si vous devez vérifier l'unicité dans différentes colonnes, vous ne pouvez pas vous fier à deux types.
Au lieu,
Ajoutez une formule couvrant le nombre maximum d'enregistrements pour chaque regroupement. Si ABC peut avoir 50 lignes, la formule sera
la source
=A2&B2
. Ajoutez ensuite une colonne D et en D2 mettez=IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0)
. Remplissez les deux. Bien que cela continue de rechercher depuis le début de la plage entière, il s'arrête lorsqu'il trouve la première, et au lieu de multiplier les valeurs de 50000 lignes ensemble, il suffit de localiser la valeur - il devrait donc fonctionner beaucoup mieux.Excel 2013 peut faire Count distinct dans les pivots. Si aucun accès à 2013, et qu'il s'agit d'une plus petite quantité de données, je fais deux copies des données brutes, et dans la copie b, sélectionnez les deux colonnes et supprimez les doublons. Puis faites le pivot et comptez votre colonne b.
la source
Vous pouvez utiliser COUNTIFS pour plusieurs critères,
= 1 / COUNTIFS (A: A, A2, B: B, B2) puis faites glisser vers le bas. Vous pouvez y mettre autant de critères que vous le souhaitez, mais cela prend généralement beaucoup de temps à traiter.
la source
Étape 1. Ajouter une colonne
Étape 2. Utilisez la formule =
IF(COUNTIF(C2:$C$2410,C2)>1,0,1)
dans le 1er enregistrementÉtape 3. Faites-le glisser vers tous les enregistrements
Étape 4. Filtrez «1» dans la colonne avec la formule
la source
Vous pouvez créer une colonne supplémentaire pour stocker l'unicité, puis additionner que dans votre tableau croisé dynamique.
Ce que je veux dire, c'est que la cellule
C1
devrait toujours l'être1
. La celluleC2
doit contenir la formule=IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1)
. Copiez cette formule vers le bas pour que la celluleC3
contienne=IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)
et ainsi de suite.Si vous avez une cellule d'en-tête, vous voudrez les déplacer vers le bas d'une ligne et votre
C3
formule devrait être=IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1)
.la source
Si vous avez les données triées .. je suggère d'utiliser la formule suivante
C'est plus rapide car il utilise moins de cellules pour calculer.
la source
Je trie généralement les données par le champ dont j'ai besoin pour faire le décompte distinct puis utiliser IF (A2 = A1,0,1); vous obtenez alors un 1 dans la rangée supérieure de chaque groupe d'identifiants. Simple et ne prend pas de temps à calculer sur de grands ensembles de données.
la source
Vous pouvez également utiliser pour la colonne d'assistance
VLOOKUP
. J'ai testé et regarde un peu plus vite queCOUNTIF
.Si vous utilisez l'en-tête et que les données commencent dans la cellule
A2
, dans n'importe quelle cellule de la ligne, utilisez cette formule et copiez-la dans toutes les autres cellules de la même colonne:la source
J'ai trouvé un moyen plus simple de faire cela. En référence à l'exemple de Siddarth Rout, si je veux compter des valeurs uniques dans la colonne A:
la source
B
. Comment allez-vous adapter cela pour travailler avec plusieurs colonnes?