【问题标题】:SUM and COUNTIFS with multiple arrays?具有多个数组的 SUM 和 COUNTIFS?
【发布时间】:2015-09-27 04:31:23
【问题描述】:

我正在尝试获取满足特定条件的行数。我已经在 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 中的值之一(Criteria 3) 并且 case Type 不是 Array 2 (Criteria 4) 中的值之一。返回的结果高于预期(通过使用这些相同标准对数据集进行手动过滤来验证这一点)。

我的猜测是重复计算正在进行,因为该公式返回 1,828 个测试一周的案例,但手动过滤验证显示 1,241(预期结果)。非常感谢您对此的任何想法或想法。

【问题讨论】:

  • 我最初尝试使用枢轴。 AA 列也是一个过滤器,因此旋转的问题是使用 AA 列作为行意味着任何计数都必须在该周内发生,而不是在该周内和之前打开任何东西。单元格 B1 也不是每一行的静态值 - 它是一周结束值。因此,在表格格式中,如果我们查看 6 周滚动视图,则 6 行将与第 1 行中的 B1、第 2 行中的 C1...第 6 行中的 G1 进行比较。

标签: arrays excel excel-formula excel-2013


【解决方案1】:

问题在于 Value1、Value2、Value3、Value4 的排列计数被视为 OR 条件,而不是 AND 条件。即使 Q2 中有 Value1,它 没有Value2、Value3Value4 所以计数是回归真实。您需要确保 Q2 中有 none 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)))

【讨论】:

  • 我很抱歉没有尽快回复,但这非常有效!我已经习惯使用 SUMPRODUCT 进行加权平均,以至于忘记了它在其他领域的用处。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多