使用带有多个AND OR条件的SUMIFS

时间:2013-11-27 09:42:53

标签: excel sum conditional sumifs

我想创建一个简洁的Excel公式,根据一组AND条件和一组OR条件来SUMS一列。

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

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

如果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公式工作的事实表明数据是正常的,这是一个语法问题。任何人都可以引导我朝着正确的方向前进吗?

7 个答案:

答案 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”条件......如果有两个,则必须将标准与<强>逗号,另一个是分号

如果您需要更多内容,可以将SUMSUMPRODUCT一起使用,例如在你的情况下

MATCH

在该版本中,您可以使用=SUMPRODUCT(Quote_Value,(Salesman="JBloggs")*(Days_To_Close<=90)*ISNUMBER(MATCH(Quote_Month,{"Oct-13","Nov-13","Dec-13"},0)))

添加任意数量的“OR”条件

答案 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")))

<强>截图

enter image description here

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

速度

SUMPRODUCTSUM数组快,即在{}函数中有SUM个数组。 SUMIFSSUMPRODUCT快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中的单元格地址。