3 votes

Compter la première occurrence d'un critère en fonction d'un deuxième critère

J'essaie d'écrire une (ou plusieurs) formule(s) Excel pour compter la première occurrence d'une valeur dans une année donnée pour chaque Personne dans mon tableau. J'ai cherché des questions connexes sur Superuser, sans succès. Pour vous donner un peu de contexte, chaque Personne a participé pendant une ou plusieurs années à un examen. Au cours de chaque année d'examen, elle a obtenu une ou plusieurs notes (valeurs 1 à 9 dans le tableau). Par exemple, la personne A a obtenu deux notes (5,3) en 2011, une note (2) en 2012 et deux notes (4,1) en 2013. Cependant, je ne suis intéressé que par le calcul des points suivants combien d'années chaque Personne avaient participé et je ne me soucie pas de savoir de quelles années il s'agissait. Mes données sont les suivantes :

Person  2011    2012    2013
A       5       
A       3                       
A               2
A                       4
A                       1               
B       7                       
B                       6               
C       1                       
C       9                       
C               4                   
C               2                   
D       5                       

C'est le résultat que je veux :

Person  Years                       
A       3                       
B       2                       
C       2                       
D       1       

J'ai essayé de nombreuses manières alambiquées/inefficaces d'obtenir ce résultat en utilisant une combinaison de SUM, COUNTIFS, et VLOOKUP, mais il a toujours compté toutes les valeurs et non la première occurrence d'une valeur dans une année donnée. Je n'arrive pas à trouver comment le faire ou si c'est même possible en utilisant les fonctions Excel. Je ne connais pas le VBA, mais je pense qu'il pourrait être nécessaire pour cela. Merci d'avance pour votre aide.

3voto

Raystafarian Points 21292

Cela ressemble à un travail pour tableau croisé dynamique ¡!

Mettez votre tableau en surbrillance et allez dans Insertion → tableau croisé dynamique et disposez-le comme vous le souhaitez. Je ferais ce qui suit .

enter image description here

1voto

Dre Points 143

Grâce au commentaire de Raystafarian, je suis en mesure de fournir une réponse détaillée à ma propre question. En utilisant un tableau croisé dynamique, je sélectionne toute la plage de mon tableau. Dans la boîte de dialogue Liste des champs du tableau croisé dynamique, j'ajoute Personne au rapport, puis faites glisser chaque année (c.-à-d. 2011, 2012, 2013) sans la cocher dans l'onglet Valeurs champ. Ce faisant, j'obtiens ce premier résultat :

Row Labels     Count of 2011    Count of 2012   Count of 2013
A              2                1               2
B              1                                1
C              2                2   
D              1        
Grand Total    6                3               3

C'est fantastique car cela me permet non seulement de COMPTER le nombre de valeurs par ligne, indiquant combien d'années chaque personne a participé, mais cela m'indique également combien de notes ont été données par année pour chaque personne.

Donc, dans ma dernière étape, j'ajoute simplement la formule =COUNT(B2:D2) dans la cellule E2 où Colonne A = Étiquettes de ligne, Colonne B = Compte de 2011, Colonne C = Compte de 2012, Colonne D = Compte de 2013, Colonne E = Années et obtenez ce résultat :

Row Labels     Count of 2011    Count of 2012   Count of 2013     Years
A              2                1               2                 3
B              1                                1                 2
C              2                2                                 2   
D              1                                                  1  
Grand Total    6                3               3

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X