web-dev-qa-db-fra.com

Utilisation de SUMIFS avec plusieurs AND OR conditions

Je voudrais créer une formule Excel succincte qui SUMS une colonne basée sur un ensemble de conditions AND, plus un ensemble de conditions OR.

Mon tableau Excel contient les données suivantes et j'ai utilisé des noms définis pour les colonnes.

  • Quote_Value (Worksheet! $ A: $ A) contient une valeur comptable.
  • Days_To_Close (Worksheet! $ B: $ B) contient une formule qui donne un nombre.
  • Vendeur (feuille de calcul! $ C: $ C) contient du texte et constitue un nom.
  • Quote_Month (feuille de calcul! $ D: $ D) contient une formule (= TEXT (feuille de calcul! $ E: $ E, "mmm-yy")) pour convertir un numéro de date/heure d'une autre colonne en une référence de mois en texte.

Je souhaite utiliser SUM Quote_Value si Salesman est égal à JBloggs et si Days_To_Close est égal ou inférieur à 90 et Quote_Month est égal à l'un des éléments suivants (octobre-13, novembre-13 ou déc-13).

Pour le moment, je dois travailler avec ça, mais cela implique beaucoup de répétitions, ce dont je ne pense pas avoir besoin.

=SUM(SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,"=Oct-13")+SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,"=Nov-13")+SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,"=Dec-13"))

Ce que j'aimerais faire est quelque chose de plus semblable à ce qui suit mais je ne peux pas trouver la syntaxe correcte:

=SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,OR(Quote_Month="Oct-13",Quote_Month="Nov-13",Quote_Month="Dec-13"))

Cette formule ne fait pas d'erreur, elle renvoie simplement une valeur 0. Pourtant, si j'examine manuellement les données, ce n'est pas correct. J'ai même essayé d'utiliser TRIM (Quote_Month) pour m'assurer que des espaces ne s'étaient pas infiltrés dans les données, mais le fait que ma formule SUM étendue fonctionne indique que les données sont correctes et qu'il s'agit d'un problème de syntaxe. Quelqu'un peut-il me guider dans la bonne direction?

8
Dominic

Vous pouvez utiliser SUMIFS comme ceci

=SUM(SUMIFS(Quote_Value,Salesman,"JBloggs",Days_To_Close,"<=90",Quote_Month,{"Oct-13","Nov-13","Dec-13"}))

La fonction SUMIFS renverra un "tableau" de 3 valeurs (un total pour "13 oct", "13 nov" et "13 déc" "), il faut donc SUM pour additionner ce tableau et vous donner le résultat final.

Soyez prudent avec cette syntaxe, vous ne pouvez avoir au plus que deux critères dans la formule avec les conditions "OU" ... et s'il y en a deux, vous devez séparer les critères avec virgules, dans l'autre avec points-virgules.

Si vous en avez besoin de plus, vous pouvez utiliser SUMPRODUCT avec MATCH, par exemple. dans ton cas

=SUMPRODUCT(Quote_Value,(Salesman="JBloggs")*(Days_To_Close<=90)*ISNUMBER(MATCH(Quote_Month,{"Oct-13","Nov-13","Dec-13"},0)))

Dans cette version, vous pouvez ajouter autant de critères "OU" en utilisant ISNUMBER/MATCH

19
barry houdini

Vous pouvez utiliser DSUM, qui sera plus flexible. Comme si vous souhaitez modifier le nom de Salesman ou le mois du devis, vous ne devez pas modifier la formule, mais uniquement certaines cellules de critère. S'il vous plaît voir le lien ci-dessous pour plus de détails ... Même les critères peuvent être formule à copier à partir d'autres feuilles

http://office.Microsoft.com/en-us/Excel-help/dsum-function-HP010342460.aspx?CTT=1

2
mooneazy

Vous pouvez envisager de référencer la date/heure réelle dans la colonne source pour Quote_Month, puis transformer votre OR en un couple de ANDs, quelque chose comme (affirmer la date dans quelque chose que j'ai choisi d'appeler Quote_Date)

=SUMIFS(Quote_Value,"<=90",Quote_Date,">="&DATE(2013,11,1),Quote_Date,"<="&DATE(2013,12,31),Salesman,"=JBloggs",Days_To_Close)

(J'ai déplacé les conditions intéressantes à l'avant).

Cette approche fonctionne ici parce que la condition "OU" spécifie en fait une plage de dates - elle pourrait ne pas fonctionner dans d'autres cas.

1
Mike Woodhouse

La vitesse

SUMPRODUCT est plus rapide que SUM arrays, c’est-à-dire que {} est un tableau dans la fonction SUM. SUMIFS est 30% plus rapide que SUMPRODUCT

{SUM(SUMIFS({}))} vs SUMPRODUCT(SUMIFS({})) les deux fonctionnent bien, mais SUMPRODUCT se sent un peu plus facile à écrire sans le CTRL-SHIFT-ENTER pour créer le {}.

Préférence

Je préfère personnellement écrire SUMPRODUCT(--(ISNUMBER(MATCH(...)))) sur SUMPRODUCT(SUMIFS({})) pour plusieurs critères. 

Toutefois, si vous avez un menu déroulant dans lequel vous souhaitez sélectionner des caractéristiques spécifiques ou toutes, SUMPRODUCT(SUMIFS()) est la seule solution. (comme pour sélectionner "tous", la valeur doit entrer dans "<>" + "Quel que soit le mot que vous voulez tant qu'il ne fait pas partie des caractéristiques spécifiques".

1
Walter S

Quote_Month (Feuille de calcul! $ D: $ D) contient une formule (= TEXT (Feuille de calcul! $ E: $ E, "mmm-aa")) pour convertir un numéro de date/heure d'une autre colonne en une référence de mois basée sur du texte.

Vous pouvez utiliser OR en ajoutant + dans Sumproduct. Regarde ça

=SUMPRODUCT((Quote_Value)*(Salesman="JBloggs")*(Days_To_Close<=90)*((Quote_Month="Cond1")+(Quote_Month="Cond2")+(Quote_Month="Cond3")))

ScreenShot

enter image description here

1
Siddharth Rout

Pour que la formule fonctionne, placez le curseur à l'intérieur de la formule et appuyez sur ctr + shift + entrée et cela fonctionnera!

0
user3685392

Avec ce qui suit, il est facile de lier l'adresse de la cellule ...

=SUM(SUMIFS(FAGLL03!$I$4:$I$1048576,FAGLL03!$A$4:$A$1048576,">="&INDIRECT("A"&ROW()),FAGLL03!$A$4:$A$1048576,"<="&INDIRECT("B"&ROW()),FAGLL03!$Q$4:$Q$1048576,E$2))

Peut utiliser les fonctions d'adresse/de substitution/colonne requises pour utiliser les adresses de cellule en mode DYNAMIC complet.

0
Ganesh