我正在尝试获取符合特定条件的行数。我已经在SO上搜索了这个问题的答案,但到目前为止找不到解决方案(注意:我找到了将SUM和COUNTIFS与一个数组一起使用但不是多个的解决方案。)
以下是我使用的公式:
=SUM(COUNTIFS('Sheet1'!$AA:$AA,"<="&$B1,'Sheet1'!$AE:$AE,"="&"",'Sheet1'!$Q:$Q,"<>"&{"Value1","Value2","Value3","Value4"},'Sheet1'!$S:$S,"<>"&{"ValueA","Value B","ValueC","ValueD","ValueE"}))
数据是客户案例数据。单元格B1是截止日期。表1中的AA列是案例打开日期,而列AE是案例结束日期。 Q和S列是过滤标准。
返回的预期计数是在当前一周或更早的时间(标准1)中打开但仍处于打开状态的案例计数(标准2),其中案例类别(列Q)不是数组1中的值之一(标准3)和案例类型不是数组2(标准4)中的值之一。返回的结果高于预期(通过使用这些相同标准对数据集进行手动过滤来验证)。
我的猜测是重复计算正在进行,因为该公式在测试的一周内返回1,828个案例,但手动过滤的验证显示1,241(预期结果)。对此有任何想法或想法,非常感谢。
答案 0 :(得分:0)
问题是针对 Value1,Value2,Value3,Value4 的排列计数被视为OR条件,而不是AND条件。即使Q2中包含 Value1 ,也 Value2,Value3 或 Value4 ,所以计数是回归真实。您需要确保Q2中 Value1,Value2,Value3,Value4 的无。列S和 ValueA,ValueB,ValueC,ValueD 也是如此。当您尝试查看包含的值时,此OR行为很有效,但在打算排除这些值时则不行。
老式的SUMPRODUCT function可以处理OR条件。
B2中数组常量的公式为
=SUMPRODUCT((Sheet1!$AA$2:$AA$999<=$B1)*SIGN(Sheet1!$AA$2:$AA$999)*(Sheet1!$AE$2:$AE$999="")*ISERROR(MATCH(Sheet1!$Q$2:$Q$999, {"Value1","Value2","Value3","Value4"}, 0))*ISERROR(MATCH(Sheet1!$S$2:$S$999, {"ValueA","Value B","ValueC","ValueD","ValueE"}, 0)))
B3中的替代公式使用D4中的值:D7和E4:E8是,
=SUMPRODUCT((Sheet1!$AA$2:$AA$999<=$B1)*SIGN(Sheet1!$AA$2:$AA$999)*(Sheet1!$AE$2:$AE$999="")*ISERROR(MATCH(Sheet1!$Q$2:$Q$999, $D$4:$D$7, 0))*ISERROR(MATCH(Sheet1!$S$2:$S$999, $E$4:$E$8, 0)))