J'ai du mal à afficher le nombre de "y" qui correspondent aux 5 derniers "a" dans un ensemble de données de deux colonnes, par exemple la première colonne contient des cellules occupées par un "a" ou " b ". La deuxième colonne contient des cellules contenant un "y" ou un "n". Existe-t-il un moyen de sortir le nombre de y dans la colonne 2 correspondant aux 5 derniers a de la colonne 1? (Les a et b ne sont pas dans un ordre particulier).
3 Réponses :
Si vous disposez d'une version d'Excel qui prend en charge la nouvelle fonctionnalité Dynamic Array, vous pouvez utiliser ceci:
La colonne A contient les données 'a' / 'b' et la colonne B a les données 'y' / 'n'
SUM(( ... )*( ...))
Comment ça marche:
(SEQUENCE(COUNTIFS(A:A,"a"),1,COUNTIFS(A:A,"a"),-1)<=5)Plage de déversement A (1), filtre de données 'y' / 'n' où 'a' / 'b' data = 'a'
.
SEQUENCE(COUNTIFS(A:A,"a"),1,COUNTIFS(A:A,"a"),-1)Une plage de déversement (2) de 'TRUE' / 'FALSE': 'TRUE' où Spill Range (1) = 'y'
.
COUNTIFS(A:A,"a")Nombre de 'a' dans la colonne
A(= nombre de lignes dans la plage de déversement (1))
.
(FILTER(B:B,A:A="a")="y")Une plage de déversement (3) de nombres allant du nombre de 'a' à 1
.
FILTER(B:B,A:A="a")Une plage de déversement (4) de 'TRUE' / 'FALSE': 'TRUE' où la plage de déversement (3)
.
=SUM((FILTER(B:B,A:A="a")="y")*(SEQUENCE(COUNTIFS(A:A,"a"),1,COUNTIFS(A:A,"a"),-1)<=5))Somme de la plage de déversement (2) * Plage de déversement (4)
ie Sum ((Colonne A = 'a' et Colonne B = 'y') * (le 'a' est l'un des 5 derniers 'a' '))
Je n'ai pas la nouvelle version d'Excel, mais j'ai vérifié que la formule fonctionne dans Google Sheets si elle est enveloppée sous forme de formule matricielle (+1).
Merci beaucoup pour cela! cela a vraiment aidé!
Nombre de y dans la colonne B correspondant aux 5 derniers a de la colonne A
Supposons que les données se trouvent dans A1:B20
Dans D4 code > entrez la formule:
=COUNTIF(INDEX(B1:B20,AGGREGATE(14,6,ROW(A1:A20)/(A1:A20="a"),5)):B20,"y")
ou,
=SUMPRODUCT(0+(INDEX(B1:B20,AGGREGATE(14,6,ROW(A1:A20)/(A1:A20="a"),5)):B20="y"))
Je pense que l'OP signifie ne compter que les "y" où Col A = "a" (donc dans vos exemples de données, la réponse serait 1 )
Voici une réponse pour les anciennes versions d'Excel. Utilisez Aggregate pour obtenir un tableau des 5 premiers numéros de ligne contenant "a" puis indexez avec la construction n (if {1} pour obtenir un tableau des valeurs correspondantes ("y" ou "n") de la colonne B. Testez chaque des valeurs de ce deuxième tableau pour voir si elles sont égales à "y", utilisez - pour les convertir en uns et zéros et Sumproduct pour les ajouter et faire fonctionner la formule comme une formule matricielle.
=SUMPRODUCT(--(INDEX(B:B,N(IF({1},(AGGREGATE(14,6,ROW(A2:A20)/(A2:A20="a"),{1,2,3,4,5})))))="y"))