【问题标题】:Excel array sum with multiple conditions based on named range基于命名范围的具有多个条件的Excel数组总和
【发布时间】:2016-07-21 20:01:04
【问题描述】:

我有一个如下所示的数组公式:

{=SUMIF(C11:C23,budgets,F11:F23)}

我想要它做的是对单元格 F11:F23 求和,其中单元格 C11:C23 是命名范围 budgets 内的值。

现在budgets 有两个值:1036110300(这些是事务代码)。但是,该公式似乎仅适用于第一个代码10361,但不适用于第二个代码。

我不想使用SUMIFS,因为我有多个工作表,我希望这个数组公式在其中工作,并且代码可能会更改,因此将它们更改在一个地方(命名范围budgets)会有所作为更容易。

有什么想法吗?我不知道 VBA,所以希望有一个公式解决方案。

【问题讨论】:

    标签: arrays excel


    【解决方案1】:

    将 SUMPRODUCT 与 COUNTIF() 一起使用:

    =SUMPRODUCT((COUNTIF(budgets,$C$11:$C$23)>0)*$F$11:$F$23)
    


    或者你可以使用这个数组公式:

    =SUM(SUMIF(C11:C23,budgets,F11:F23))
    

    作为一个数组,退出编辑模式时需要使用 Ctrl-Shift-Enter 输入,而不是 Enter。如果操作正确,Excel 会在公式周围加上{}

    【讨论】:

    • 哇,谢谢!第二个答案绝对适合我的目的。为什么我的公式不起作用?为什么需要额外的SUM?而且,我将如何做相反的事情(也就是说,不在budgets 范围内?)
    • 附加总和是在迭代时对单个 sumif 求和,在这种情况下,它执行两个单独的 sumif 并将它们相加。相反,我相信你会想要 SUMPRODUCT() 并将 >0 更改为 =0
    • 好的,第二个公式有效!!但我仍然对为什么第二个SUM 是必要的感到困惑——有什么方法可以更详细地解释它吗?也许在你的答案中写下它在每一步的评估?
    • Sumif 本身不是也不能成为将迭代标准的数组公式。因此,您需要执行类似于=SUMIF(cirt1) + SUMIF(Crit2) + ... 的操作,这与=SUM(SUMIF(allCrit)) 的数组形式相同。它是SUM 导致标准的迭代而不是SUMIF。 @vashts85
    • 谢谢! COUNTIF 公式呢?我以前用过这些,但似乎你的范围和标准颠倒了,但一切正常吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多