Ceci est mon premier post sur ce forum, il est donc probablement présenté de manière très négative. J'utilise Excel 2007 pour collecter des données pour ma thèse. J'ai récemment appris à imbriquer COUNTIFS dans SOMPRODUCT afin de rechercher plusieurs critères dans lesquels l'un de ces critères est une plage plutôt qu'une constante. Cependant, la même formule ne fonctionne pas si je dois rechercher plusieurs critères, dont deux (ou plus) sont des plages plutôt que des constantes.
Supposons que j'ai trois colonnes adjacentes A-C dans Excel, où A est appelé "Fruits" et contenant divers fruits, B, "couleur" et C, "poison?", Contenant uniquement les valeurs "oui" ou "non". Comment puis-je additionner tous les articles qui sont une pomme OU une poire de la colonne A et SOIT vert OU rouge de la colonne B et non toxique de la colonne C?
Dans cette simple feuille de calcul Excel, la réponse correcte est 4, mais la formule suivante me donne 1:
=SUMPRODUCT(COUNTIFS(A:A,$E$2:$E$3,B:B,$F$2:$F$3,C:C,$G$3))
où les critères font référence à des tableaux que j'ai mis en place manuellement à l'extérieur.
Je cherchais des réponses à la fois sur le net et sur le forum, et je trouve des dizaines de posts liés, certains peut-être même identiques ( Countifs avec plusieurs gammes de critères OR ), mais je n’arrive toujours pas à le savoir ... Je suis en retard avec ma thèse, alors j’apprécierais toute aide.
Réponses:
Vous n'avez besoin de rien imbriquer. La fonction
SUMPRODUCT
est un outil très puissant, qui vous permet de compter ou d’additionner en fonction de conditions très complexes. Il prend en charge les opérateurs logiques AND et OR.Version TL; DR
Version longue (désolé ...)
Vous devriez vraiment apprendre à utiliser cette fonction, car elle est très utile et peut vous faire gagner beaucoup de temps. Voici un guide rapide et compliqué sur la façon de l'utiliser, mais je vous conseille de conserver un fichier de test contenant des exemples simples, comme celui que vous avez fourni, pour pouvoir l'essayer. N'hésitez pas à diviser les différents problèmes que vous essayez de résoudre.
Fondamentalement, un
SUMPRODUCT
contient plusieurs membres , chacun d'eux étant une condition. Si vous multipliez ces conditions, vous obtenez un ET logique. Si vous ajoutez ces conditions, vous obtenez un OU logique.C'est beaucoup plus facile avec un exemple! Donc, voici la répartition de la formule finale en utilisant votre exemple de fruits.
Remarque: pour faciliter les choses, j'ai utilisé un nom de table
Fruits
, qui permet l’utilisation de plages nommées et améliore la lisibilité.Alors, voici comment cela fonctionne. Votre première condition est en fait un OU logique (vous voulez des pommes ou des poires, puisqu'un fruit ne peut pas être les deux. Donc, la formule (1) a 2 membres, ou 2 conditions: Fruit = Pomme, Fruit = Poire.
(Fruits[Fruit]="Apple")
reviendraTRUE
si c'est une pomme,FALSE
autrement. En faisant la somme au 2e membre ((Fruits[Fruit]="Pear")
), vous obtiendrez un tableau de 0 et 1. La logique est la suivante:Puis le
SUMPRODUCT
additionnera tous les éléments de ce tableau (0 et 1). Ce qui est fondamentalement la même chose que compter des éléments. Le résultat est 8, comme prévu (cellule D14).La 2ème condition (couleur) fonctionne exactement de la même manière. Si vous souhaitez inclure une 3ème couleur (par exemple "orange"), vous devez simplement ajouter un nouveau membre dans
+
.La 3ème condition est plus simple, vous n'avez qu'un critère. J'ai utilisé le
<>
signer volontairement pour vous montrer que vous pouvez également exclure des éléments. Dans la formule (1), vous auriez pu utiliser par exemple(Fruits[Fruit]<>"Banana")
.Important: Veuillez noter que dans un
SUMPRODUCT
, lorsqu'il n'y a qu'un seul membre (comme dans la 3ème équation), vous devez convertir le résultat en nombre. Se souvenir duSUMPRODUCT
crée un tableau deTRUE
etFALSE
. Vous pouvez le faire facilement en utilisant leN(...)
fonction, ou bien écrire--(...)
, qui transformeraTRUE
en 1, etFALSE
en 0.Maintenant, ces 3 conditions fonctionnent individuellement, mais nous souhaitons les combiner en une formule. Et puisque nous voulons que chacune de ces 3 conditions soit vraie (fruit, couleur et poison), nous devons créer un ET logique. Ceci peut être fait de la même manière que nous avons fait notre OU, mais cette fois nous utiliserons la multiplication (
*
):Pour nos 3 conditions, nous utilisons simplement les 3 formules individuelles que nous avons écrites précédemment et nous les plaçons
SUMPRODUCT
. Ces 3 membres doivent être encapsulés entre parenthèses et séparés par un*
(nous les multiplions fondamentalement).Voici les formules finales à essayer:
Et le dernier:
Notes de côté:
(Fruits[Color]="Red")
(X and (Y or Z))
n'est pas la même chose que((X and Y) or Z)
.SUMPRODUCT
compter, mais on peut aussi l’utiliser pour résumer des choses. Si l'un des membres de l'équation n'a pas de=
signe, les valeurs sont prises en compte (voir l’exemple ci-dessous, où la colonne G est ajoutée)."Apple"
peut être remplacé par une référence à une cellule, qui peut être un menu déroulant. Il est préférable d’utiliser des variables plutôt que d’écrire du texte directement dans une formule.SUMPRODUCT
peut être une formule gourmande en ressources, car elle génère des multiplications et des sommes ... En fonction du nombre de conditions que vous testez, de la taille du jeu de données et du nombre de fois que vous utilisez unSUMPRODUCT
. Pour des conditions plus simples,SUM.IFS
est probablement plus rapide.SUMPRODUCT
prend également en charge la recherche de texte partielle, comme indiqué ci-dessous:la source
Voici une solution alternative qui fonctionne très bien et qui est beaucoup plus adaptée au besoin du PO de disposer d’une liste de critères possibles. J'ai adapté le code trouvé sur cette réponse .
Vous avez essentiellement 2 façons de compter les valeurs:
ISNUMBER
ISNA
Liste blanche:
Liste noire:
Je vous conseille vivement de ne pas utiliser ceci sur une colonne, car cela pourrait nécessiter beaucoup de ressources. Je n'ai pas essayé une très grande liste de valeurs, mais n'hésitez pas à partager vos résultats!
la source
Je ne suis pas sûr de bien comprendre cela, mais il semble être possible d'obtenir la réponse avec
Essayer d'expliquer: comme on sait
COUNTIF($B$2:$B$10, "Red")
(ou équivalent,COUNTIF($B$2:$B$10, $F$2)
compte le fruit rouge, donnant un compte de 3. De même,COUNTIF($B$2:$B$10, "Green")
(ou équivalent,COUNTIF($B$2:$B$10, $F$3)
compte le fruit vert, donnant un compte de 5. Il est donc intuitivement tentant d'essayer d'utiliserCOUNTIF($B$2:$B$10, $F$2:$F$3)
compter les fruits qui sont rouges ou verts. Cela ne marche pas tout seul, mais on peut y arriver en faisantsous forme de formule matricielle, ou
comme une formule normale. Une des bonnes choses à propos de
SUMPRODUCT
est-ce il est conçu pour gérer les tableaux automatiquement, vous pouvez donc l'utiliser pour faire des choses avec des tableaux sans avoir besoin de formules de tableau.Mais les formules ci-dessus font exactement ce que la discussion précédente conduirait à vous attendre: ils ajoutent 3 + 5 et obtenir 8. Ceci est important: ils ajoutent un tableau de deux nombres, parce que nous examinons deux couleurs. Cela nous pose des problèmes lorsque nous recherchons différents nombres de valeurs. dans les différentes colonnes.
COUNTIF($E$2:$E$3, "Yellow")
,COUNTIF($E$2:$E$3, "Red")
etCOUNTIF($E$2:$E$3, "Green")
ne semble pas, au début, avoir autant de sens; ils ont respectivement les valeurs 0, 1 et 1. Mais cela signifie queCOUNTIF($E$2:$E$3,$A$2:$A$10)
produit un tableau de neuf chiffres, à savoir: 0, 1, 1, 1, 1, 1, 1, 1, 1 et 1. Devine quoi? La somme est encore 8.Rappelez-vous comment
SUMPRODUCT
travaux.SUMPRODUCT(X11:X14, Y11:Y14, Z11:Z14)
, par exemple, est égal à(
X11
×Y11
×Z11
) +(
X12
×Y12
×Z12
) +(
X13
×Y13
×Z13
) +(
X14
×Y14
×Z14
)il doit donc avoir des arguments de tableau de même longueur. Deux, deux et un est un problème; 15, 26 et un autre nombre est un problème. Neuf, neuf et neuf, c'est bien.
Maintenant, regarde le
X
,Y
,Z
exemple, mais faites ces substitutions:X11
→A2
est l'un des fruits que nous recherchons,Y11
→B2
est l'une des couleurs que nous recherchons,Z11
→C2
est «non»,et ainsi de suite. Puisque TRUE est 1 et FALSE est 0, chaque ligne du
SUMPRODUCT
la matrice est 1 si chaque colonne contient une valeur que nous recherchons (car 1 × 1 × 1 = 1), et 0 si la ligne n'est pas acceptable dans toutes les colonnes. Nous avons donc une liste de neuf 0 et 1 que nous ajoutons.la source
Puisque c'est l'enjeu clé, " J'aimerais compter le nombre de pommes et de poires (pas de bananes) vertes ou rouges mais non toxiques . "
Par conséquent, je voudrais suggérer que la solution sous forme de tableau réponde à vos exigences.
Vérifiez la capture d'écran:
Écrivez cette formule en E2:
=COUNTIFS($A$2:$A$10, "="&$D2,$B$2:$B$10,"="&E$1)
Remarque, Remplissez la formule une cellule à droite, puis une rangée vers le bas, vous obtenez le nombre de pommes et de poires.
Écris cette formule en G2:
=COUNTIFS($A$2:$A$10, "="&$D2,$C$2:$C$10,"=No")
Remarque, Remplissez la formule une ligne vers le bas, vous obtenez le nombre de non-poison Apple & amp; Poires.
Enfin, faites la somme de la colonne non toxique.
la source
=SUM(G2:G3)
, où la formule pourG2
etG3
regarde les colonnesA
,D
, etC
- où les colonnesA
etD
sont des fruits (pomme / banane / poire) et ColumnC
est toxique (oui ou non). Il ne regarde pas la colonneB
(couleur), et les résultats intermédiaires dans les cellulesE2:F3
ne sont pas utilisés dans la réponse finale.