我有一个包含四列的数据集:Start Date
,End Date
,Scheduled Qty
和Actual Quantity
:
Start Date End Date Scheduled Qty Actual Qty
04/13/15 04/17/15 35 19
04/20/15 04/24/15 35 42
04/27/15 05/01/15 35 41
05/04/15 05/08/15 35 41
我想查找实际总数,除非实际超出预定时我想使用预定数字。
在一个已经回答的问题(Sum minimum of corresponding column values)中,我找到了一个数组公式,用于计算Qty
列(用于显示小于符号的引号)的每一行的较小值:
=SUM(IF(C1:C4"<"D1:D4, C1:C4, D1:D4))
这给了我整个范围的总数,但现在我想将它限制在一个日期范围内,例如给定月份内的结束日期。我在其他情况下使用SUMIFS
来查看我的结束日期,只查看给定月份内的数据总和,但我不知道如何将这个想法与数组公式中的想法结合起来。 / p>
任何想法如何实现这一目标?我在Excel 2013工作。
答案 0 :(得分:1)
这是偶然方法的延伸: Excel的SUM函数(以及AVERAGE,STDEV等)具有&#34;跳过&#34;的有用行为。超过文本值。例如AVERAGE(3,4,&#34; dog&#34;,5)返回4.您可以在一个总和中利用嵌套IF的这种行为。例如,
=SUM(IF(MONTH(B1:B4)=4,IF(C1:C4<D1:D4,C1:C4,D1:D4),"NO"))
将总结 (a)预定和实际的较小者 (b)当月为4时
这是通过嵌套的IF实现的。外部IF是
IF(MONTH(B1:B4)=4,...,"NO")
[如果是月份&lt;&gt; 4,IF返回文本(&#34; NO&#34;),其中SUM跳过]
内部IF与偶然所展示的相同。 您可以根据需要为数据嵌套任意数量的测试/过滤器
答案 1 :(得分:0)
要在大多数情况下将标准添加到数组函数 ,您只需将额外条件乘以您已有的任何条件集。
之所以这样做是因为我们从我们想要总结的数字列表开始:
IF(C1:C4<D1:D4, C1:C4, D1:D4) => { 19, 35, 35, 35 }
然后我们将1或0乘以符合额外条件的每个值。
因此,举一个示例,我们只想检查4
月内结束日期的值的数量。我们可以这样做:
MONTH(B1:B4)=4
只需将SUM
函数中的条件相乘,即可为该条件创建一个布尔and
条件:
=SUM(IF(C1:C4<D1:D4, C1:C4, D1:D4)*(MONTH(B1:B4)=4))
= SUM({ 19, 35, 35, 35 } * { 1, 1, 0, 0}) => SUM( {19, 35, 0, 0} ) = 54
如果我们想要添加n个条件,那么这是相同的:
=SUM(IF(C1:C4<D1:D4, C1:C4, D1:D4)*(MONTH(B1:B4)=4)*(`Condition2`)*(`Condition3`)...)
您可以使用在您的条件中返回true / false值的任何公式或运算符
例如:=
>
<
>=
<=
<>
IF(...,TRUE)
要添加OR
逻辑作为条件,您需要使用加法而不是乘法,然后将它们分组到(..)>0
内,如下所示:
(((Or_Condition1)+(Or_condition2)+...+(Or_conditionN))>0)
因此,如果我们想要总结4个月或5个月,我们可以写:
=SUM(IF(C1:C4<D1:D4, C1:C4, D1:D4)*(((MONTH(B1:B4)=4)+(MONTH(B1:B4)=5))>0))