Comptage de plusieurs critères de distance

1

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))

enter image description here

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.

Pjossemannen
la source
Si votre exigence est de compter les fruits par couleur et le nombre de poisons et de fruits toxiques sous forme de tableau, la réponse est prête avec moi, veuillez confirmer!
Rajesh S
@RajeshS, je ne comprends pas très bien; J'aimerais compter le nombre de pommes et de poires (pas de bananes) vertes ou rouges mais non toxiques. Comme toutes les pommes et les poires de mon tableau sont vertes ou rouges, la réponse correcte doit être 4, car il y a 2 pommes non toxiques et 2 poires non toxiques. Cependant, en utilisant la formule donnée dans mon post, je reçois la réponse 1, ce qui est faux. Savez-vous comment fournir la bonne formule? En termes plus généraux, comment puis-je utiliser deux critères de plage dans la même formule?
Pjossemannen
(1) S'il vous plaît ne pas appeler Stack Exchange (dont Super utilisateur est une partie) un "forum". C'est un site de questions et réponses. (2) Vous dites: «J'ai récemment appris à imbriquer COUNTIFS à l'intérieur de SOMPRODUCT afin de rechercher plusieurs critères, l'un de ces critères étant une plage plutôt qu'une constante. Je suppose que j’ai compris / retenu de ce dont vous parlez, mais je ne l’ai pas immédiatement reconnu par votre description. Si vous aviez montré un exemple (et / ou lié à une explication avec des exemples),… (suite)
Scott
(Suite)… (2a) les gens auraient pu apprendre quelque chose de votre question, et (2b) les personnes auraient pu travailler à élaborer une réponse à votre question en s'appuyant sur ce que vous savez déjà, plutôt que de partir de zéro et / ou d'essayer de reconstruire ce que vous savez déjà (réinventer la roue). (3) Vous souhaiterez peut-être développer des données moins uniformes. (3a) Toutes vos pommes et poires sont rouges ou vertes. Et inversement, tous vos fruits rouges ou verts sont des pommes ou des poires. Par conséquent, vous obtenez des choses comme La réponse de RajeshS ,… (Suite)
Scott
(Suite)… qui compte en fait les pommes et les poires non toxiques (sans égard à la couleur), et obtient la bonne réponse parce que les données ne sont pas assez robustes. (3b) En regardant votre fruit non toxique, vous avez exactement une pomme rouge, une pomme verte, une poire rouge et une poire verte - et pas d'autres couleurs ni fruits. Ce type d'uniformité permet à une mauvaise formule d'obtenir facilement la bonne réponse. (4) Nous préférons que vous ne publiiez pas de capture d'écran de feuilles de calcul (ou, en général, d'images de texte). Postez une représentation textuelle de vos données,… (suite)
Scott

Réponses:

1

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

=SUMPRODUCT((($A$2:$A$10="Apple")+($A$2:$A$10="Pear"))*(($B$2:$B$10="Red")+($B$2:$B$10="Green"))*($C$2:$C$10<>"Yes"))

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é.

enter image description here

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") reviendra TRUE 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:

  • Faux + Faux = 0
  • Vrai + faux = 1
  • Vrai + Vrai = 1

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 du SUMPRODUCT crée un tableau de TRUE et FALSE. Vous pouvez le faire facilement en utilisant le N(...) fonction, ou bien écrire --(...), qui transformera TRUE en 1, et FALSE 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 ( * ):

  • Faux * Faux = 0
  • Vrai * faux = 0
  • True * True = 1

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:

=SUMPRODUCT((Fruits[Fruit]="Apple")+(Fruits[Fruit]="Pear"))
=SUMPRODUCT((Fruits[Color]="Red")+(Fruits[Color]="Green"))
=SUMPRODUCT(N(Fruits[Poisonous]<>"Yes"))

Et le dernier:

=SUMPRODUCT(((Fruits[Fruit]="Apple")+(Fruits[Fruit]="Pear"))*((Fruits[Color]="Red")+(Fruits[Color]="Green"))*(Fruits[Poisonous]<>"Yes"))

Notes de côté:

  • Chaque condition que vous testez (par exemple, Couleur = Rouge) doit être encapsulée entre parenthèses: (Fruits[Color]="Red")
  • L'ordre des parenthèses est très important si vous avez des conditions OU. Par exemple, l'équation (X and (Y or Z)) n'est pas la même chose que ((X and Y) or Z).
  • Vous pouvez utiliser les opérateurs classiques pour tester une condition: = à égalité, & lt; & gt; pour différent, & gt; et & lt; pour supérieur / inférieur à, & gt; = et & lt = = pour supérieur / inférieur ou égal.
  • Nous avons utilisé le 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).
  • Le critère "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 un SUMPRODUCT. 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:

enter image description here

piko
la source
Merci pour cette réponse très informative, je vais expérimenter avec cela. C'est la formule finale qui m'intéresse, car elle combine tout en une seule formule. Cependant, les deux variables à distance que j'ai ont de très nombreux éléments. Ce serait comme avoir 24 fruits et 16 couleurs dans la formule finale. Au lieu de renfermer chaque condition dans "", est-il possible de faire référence à une plage de cellules dans laquelle les critères sont énumérés, de sorte que je puisse simplement les "glisser" dans la formule, comme par exemple: ... F1: F24)) * ((Fruits [Couleur] = G1: G16)) ... etc. Je ne comprends pas que cela fonctionne pour plus d'une condition à distance.
Pjossemannen
En effet, ce n'est peut-être pas la meilleure solution si vous avez beaucoup de critères ... J'ai trouvé une autre solution qui fonctionne très bien, je vais la poster comme nouvelle réponse.
piko
1

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:

  • Soit en utilisant une "liste blanche", pour lister les valeurs acceptables, en utilisant ISNUMBER
  • Soit en utilisant une "liste noire", pour exclure les valeurs inacceptables, en utilisant ISNA

Liste blanche:

=SUMPRODUCT(
    (ISNUMBER(MATCH(Fruits[Fruit],Whitelist[Fruit];0)))
    *
    (ISNUMBER(MATCH(Fruits[Color],Whitelist[Color];0)))
    *
    (ISNUMBER(MATCH(Fruits[Poisonous],Whitelist[Poisonous];0)))
)

Liste noire:

=SUMPRODUCT(
    (ISNA(MATCH(Fruits[Fruit],Blacklist[Fruit],0)))
    *
    (ISNA(MATCH(Fruits[Color],Blacklist[Color],0)))
    *
    (ISNA(MATCH(Fruits[Poisonous],Blacklist[Poisonous],0)))
)

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!


enter image description here

piko
la source
0

Je ne suis pas sûr de bien comprendre cela, mais il semble être possible d'obtenir la réponse avec

=SUMPRODUCT(COUNTIF($E$2:$E$3,$A$2:$A$10), COUNTIF($F$2:$F$4,$B$2:$B$10), COUNTIF($G$3,$C$2:$C$10))

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'utiliser COUNTIF($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 faisant

=SUM(COUNTIF($B$2:$B$10, $F$2:$F$3))

sous forme de formule matricielle, ou

=SUMPRODUCT(COUNTIF($B$2:$B$10, $F$2:$F$3))

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") et COUNTIF($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 que COUNTIF($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:

  • X11A2 est l'un des fruits que nous recherchons,
  • Y11B2 est l'une des couleurs que nous recherchons,
  • Z11C2 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.

Scott
la source
-3

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:

enter image description here

É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.

Rajesh S
la source
merci, cela fonctionne bien sûr. Toutefois, ma question sur les poires et les pommes n’est qu’un exemple. Mes fichiers de données contiennent des informations complètement différentes et beaucoup plus complexes. Par exemple, la plage du premier critère (l’équivalent des pommes ou poires) couvre plus de 15 valeurs différentes et la plage du deuxième critère (l’équivalent rouge ou vert) couvre plus de 26 valeurs différentes, soit un total de 15 X 26, plutôt que 2 X 2. Ce dont j'ai vraiment besoin, c'est d'une formule unique, plutôt que de la diviser en plusieurs ... Dans cet exemple, une seule formule pour donner la réponse 4.
Pjossemannen
1
En fait, non, ça ne marche pas. Oui, oui, cela donne la bonne réponse (4), mais il obtient la bonne réponse pour la mauvaise raison; par coïncidence. Plus précisément, il compte les pommes et les poires non toxiques, quelle que soit leur couleur. C’est évident, quand on le regarde: la réponse finale est: =SUM(G2:G3), où la formule pour G2 et G3 regarde les colonnes A, D, et C - où les colonnes A et D sont des fruits (pomme / banane / poire) et Column C est toxique (oui ou non). Il ne regarde pas la colonne B (couleur), et les résultats intermédiaires dans les cellules E2:F3 ne sont pas utilisés dans la réponse finale.
Scott
@Pjossemannen ,, ravi de vous entendre, si cela fonctionne pour vous alors s'il vous plaît soit le voter ou accepter comme réponse. Et j'ai résolu le problème sur la base des informations que vous nous avez transmises. En ce qui concerne vos données réelles, je ne peux dire que si les données ne sont pas disponibles, je ne peux pas vous dire quoi faire. si vous vous sentez mailez-moi, trouvez mon identifiant dans le profil.
Rajesh S
Comme Scott l'a dit, le résultat final ne prend pas en compte les critères de couleur. Cette solution ne fonctionne donc pas.
piko