在多个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”条件下,公式中只能有至多两个条件…如果有两个条件,那么在一个条件中,必须用逗号分隔条件,另一条则用分号 。
如果你需要更多,你可以使用SUMPRODUCT
与MATCH
,例如你的情况
=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")))
截图
速度
SUMPRODUCT
比SUM
数组更快,即在SUM
函数中有{}
数组。 SUMIFS
比SUMPRODUCT
快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中的单元地址。