我想创建一个简洁的Excel公式,根据一组AND条件和一组OR条件来SUMS一列。
我的Excel表格包含以下数据,我使用了列的定义名称。
如果Salesman等于JBloggs并且Days_To_Close等于或小于90且Quote_Month等于以下之一(10月13日,11月13日或12月13日),我想要SUM_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)来确保空间没有进入数据,但我的扩展SUM公式工作的事实表明数据是正常的,这是一个语法问题。任何人都可以引导我朝着正确的方向前进吗?
答案 0 :(得分:19)
您可以像这样使用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”各一个),因此您需要{{1}对该数组求和并给出最终结果。
请注意这种语法,在公式中只有两个标准,并带有“OR”条件......如果有两个,则必须将标准与<强>逗号,另一个是分号。
如果您需要更多内容,可以将SUM
与SUMPRODUCT
一起使用,例如在你的情况下
MATCH
在该版本中,您可以使用=SUMPRODUCT(Quote_Value,(Salesman="JBloggs")*(Days_To_Close<=90)*ISNUMBER(MATCH(Quote_Month,{"Oct-13","Nov-13","Dec-13"},0)))
答案 1 :(得分:2)
您可以使用DSUM,它会更灵活。就像您想要更改Salesman或Quote Month的名称一样,您无需更改公式,只需更改某些条件单元格。请参阅下面的链接了解详情......即使是标准也可以是从其他表格中复制的公式
http://office.microsoft.com/en-us/excel-help/dsum-function-HP010342460.aspx?CTT=1
答案 2 :(得分:1)
Quote_Month(工作表!$ D:$ D)包含一个公式(= TEXT(工作表!$ E:$ E,“mmm-yy”)),用于将日期/时间编号从另一列转换为基于文本的月份参考
您可以在OR
中添加+
来使用Sumproduct
。见这个
=SUMPRODUCT((Quote_Value)*(Salesman="JBloggs")*(Days_To_Close<=90)*((Quote_Month="Cond1")+(Quote_Month="Cond2")+(Quote_Month="Cond3")))
<强>截图强>
答案 3 :(得分:1)
您可以考虑在Quote_Month
的源列中引用实际日期/时间,然后您可以将OR
转换为几个AND
,类似于(假设日期为在我选择致电Quote_Date
)
=SUMIFS(Quote_Value,"<=90",Quote_Date,">="&DATE(2013,11,1),Quote_Date,"<="&DATE(2013,12,31),Salesman,"=JBloggs",Days_To_Close)
(我将有趣的条件移到了前面)。
此方法适用于此处,因为“OR”条件实际上是指定日期范围 - 在其他情况下可能不起作用。
答案 4 :(得分:1)
SUMPRODUCT
比SUM
数组快,即在{}
函数中有SUM
个数组。 SUMIFS
比SUMPRODUCT
快30%。
{SUM(SUMIFS({}))}
vs SUMPRODUCT(SUMIFS({}))
两者都运行正常,但SUMPRODUCT
在没有CTRL-SHIFT-ENTER
创建{}
的情况下更容易编写。
我个人更喜欢在SUMPRODUCT(--(ISNUMBER(MATCH(...))))
上撰写SUMPRODUCT(SUMIFS({}))
以获取多个条件。
但是,如果您有一个下拉菜单,您想要选择特定的特征或全部,SUMPRODUCT(SUMIFS())
是唯一的方法。 (至于选择&#34;所有&#34;,该值应输入&#34;&lt;&gt;&#34; +&#34;无论你想要什么字,只要它不属于具体特点&#34;。
答案 5 :(得分:0)
为了让公式工作,将光标置于公式内并按ctr + shift + enter然后它将起作用!
答案 6 :(得分:0)
通过以下内容,可以轻松链接单元格地址...
=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))
可以根据需要使用地址/替换/列函数来使用完整DYNAMIC中的单元格地址。