【问题标题】:why do I need to make sumproduct an array formula to make it work为什么我需要将 sumproduct 设为数组公式才能使其工作
【发布时间】:2016-05-28 22:05:10
【问题描述】:

让这个例子保持简单。我试图弄清楚为什么当我将公式作为 CSE 输入时计数是正确的,但当我不输入整个公式只是 sumproduct 时计数是错误的。

示例 1

    B      |       C      |        D         |         E        |       F
condtion 1 |  condition 2 | strings Jan 2016 | strings Feb 2016 | strings Mar 2016
15/06/01   |  17/06/01    |       2          |         4        |       6

示例 2

condtion 1 |  condition 2 | strings Jan 2016 | strings  ONLY   | strings Mar 2016
15/06/01   |  17/06/01    |      2           |        4        |      6

如果第一行中的日期大致介于条件 1 和条件 2 中的日期之间,即 Excel 日期序列,我正在修改一个公式来将这些值相加。我想出了:

=SUMPRODUCT((DATE(RIGHT($D$1:$F$1,4),MONTH(MID($D$1:$F$1,9,3)&"-1"),1)>=$B2)*(DATE(RIGHT($D$1:$F$1,4),MONTH(MID($D$1:$F$1,9,3)&"-1"),1)<$C2)*(LEFT($D$1:$F$1,7)="strings")*$D$2:$F$2)

它适用于示例 1。对于示例 2,当我将日期不在字符串中时,公式会生成 #Value。所以我开始把公式分解成几个部分,让它只计算月份 >= 条件 1 并将内容包装在 IFERROR(...,0) 中,如下所示:

=SUMPRODUCT(IFERROR(--(DATE(RIGHT($D$1:$F$1,4),MONTH(MID($D$1:$F$1,9,3)&"-1"),1)>=$B2),0))

当我正常输入时,两个示例都得到 0,但如果我将其作为 CSE 输入,例如 1 得到 3,例如 2 得到 2,这是预期的答案。

据我了解,sumproduct 在其括号内创建了类似数组的计算。为什么我需要将上面的公式作为 CSE 输入,而它应该已经以这种方式执行?

在这种情况下,有没有办法使用 sumproduct 而不将其设为数组?

【问题讨论】:

    标签: excel-formula


    【解决方案1】:

    如果您在 SUMPRODUCT() 中使用 IF() 函数或 IFERROR() 或任何 IFx() 函数,则需要使用 CSE。

    【讨论】:

    • 如果您在 SUMPRODUCT() 之外使用 IFERROR(),则不需要使用 de CSE。 =IFERROR(SUMPRODUCT(--(DATE(RIGHT($D$1:$F$1,4),MONTH(MID($D$1:$F$1,9,3)&amp;"-1"),1)&gt;=$B2)),0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多