在多个AND条件下使用SUMIFS

我想创build一个简洁的Excel公式,它基于一组AND条件,加上一组OR条件。

我的Excel表格包含以下数据,并使用了列的定义名称。

  • Quote_Value(Worksheet!$ A:$ A)包含一个会计值。
  • Days_To_Close(工作表!$ B:$ B)包含一个导致数字的公式。
  • 推销员(工作表!$ C:$ C)包含文本并且是一个名字。
  • Quote_Month(工作表!$ D:$ D)包含一个公式(=文本(工作表!$ E:$ E,“mmm-yy”))将另一列的date/时间数字转换为基于文本的月份引用。

如果推销员等于JBloggs且Days_To_Close等于或小于90,并且Quote_Month等于以下值(Oct-13,Nov-13或Dec-13)中的一个,我想要SUM Quote_Value。

目前,我有这个工作,但它包括了很多重复,我不认为我需要。

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

我想要做的是更像下面的东西,但我不能找出正确的语法:

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

该公式没有错误,它只是返回一个0值。 但是,如果我手动检查数据,这是不正确的。 我甚至尝试过使用TRIM(Quote_Month)来确保空格没有embedded到数据中,但是我的扩展SUM公式工作的事实表明数据是正确的,这是一个语法问题。 任何人都可以把我引向正确的方向吗?

你可以像这样使用SUMIFS

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

SUMIFS函数将返回3个值(“Oct-13”,“Nov-13”和“Dec-13”各一个)的“数组”,所以您需要SUM来对该数组进行求和并给出最终结果。

要小心这种语法,在“OR”条件下,公式中只能有至多两个条件…如果有两个条件,那么在一个条件中,必须用逗号分隔条件,另一条则用分号

如果你需要更多,你可以使用SUMPRODUCTMATCH ,例如你的情况

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

在该版本中,您可以使用ISNUMBER/MATCH添加任意数量的“OR”条件

您可以使用DSUM,这将更加灵活。 就像如果你想改变推销员或者行情月份的名字,你不需要改变公式,只需要改变一些标准单元格。 请参阅下面的链接了解详细信息…甚至可以从其他工作表复制标准

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

你可以考虑在Quote_Month的source列中引用实际的date/时间,然后你可以将你的OR转换成几个AND ,就像(在我select调用Quote_Date东西中剔除date)

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

(我把有趣的条件移到了前面)。

这种方法在这里工作,因为“或”条件实际上是指定一个date范围 – 它可能无法在其他情况下工作。

Quote_Month(工作表!$ D:$ D)包含一个公式(=文本(工作表!$ E:$ E,“mmm-yy”))将另一列的date/时间数字转换为基于文本的月份引用。

您可以通过在Sumproduct添加+来使用OR 。 看到这个

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

截图

在这里输入图像描述

速度

SUMPRODUCTSUM数组更快,即在SUM函数中有{}数组。 SUMIFSSUMPRODUCT快30%。

{SUM(SUMIFS({}))}SUMPRODUCT(SUMIFS({}))都可以正常工作,但SUMPRODUCT在没有使用CTRL-SHIFT-ENTER创build{}感觉更容易一些。

偏爱

我个人更喜欢使用SUMPRODUCT(SUMIFS({}))SUMPRODUCT(--(ISNUMBER(MATCH(...))))编写多个条件。

但是,如果您想要select特定特征或全部的下拉菜单,则SUMPRODUCT(SUMIFS())是唯一的select。 (至于select“全部”,值应input“<>”+“无论你想要什么字,只要它不是具体特征的一部分”。

为了得到公式的工作将光标放在公式中,然后按ctrl + shift + enter,然后它将工作!

随着以下,很容易链接单元地址…

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

可以根据需要使用地址/替代/列function来使用完整DYNAMIC中的单元地址。