【问题标题】:Excel - SUM or SUMIF all columns of a 2D array where rows are filtered by a horizontal functionExcel - SUM 或 SUMIF 二维数组的所有列,其中行由水平函数过滤
【发布时间】:2020-12-10 06:53:14
【问题描述】:

我想对多列求和,但只对总和大于 0 的行求和。一种可行的方法是添加一个额外的列,该列本质上排除了 SUM

注意:如果有帮助,我正在使用动态数组支持的 O365。提前致谢。

【问题讨论】:

    标签: excel excel-formula office365


    【解决方案1】:

    如果我明白你的意思,使用MMult 函数将有助于将矩阵A2:C4 转换为E2:E4。

    -你可以使用LET函数,如果你有Office365-Insider,

    =LET(x,A2:C4,y,MMULT(x*1,SEQUENCE(COLUMNS(x))^0),SUM(y*(y>0)))
    

    -或缺少 LET:

    =SUM(MMULT(A2:C4*1,SEQUENCE(COLUMNS(A2:C4))^0)*(MMULT(A2:C4*1,SEQUENCE(COLUMNS(A2:C4))^0)>0))
    

    我使用 x*1 的原因是为了避免将单元格留空时可能出现的错误。

    【讨论】:

    • 哇!我没有 Insider,但根据我刚刚读到的关于 LET() 的内容,我有很多用处。
    • @dfunky1 你可以用 Excel Online 试试 LET,看起来除了 lambda 函数外它都可用!
    • 谢谢!我花了一点时间来消化它,但我想我明白了。我确实做了一些小的修改,以使其可与新数据重用;基本上引用列而不是数组。 =SUM(MMULT(A:C*1,SEQUENCE(COLUMNS(A:C))^0)*MMULT(A:C*1,SEQUENCE(COLUMNS(A:C))^0)>0))
    【解决方案2】:

    在G2,输入公式:

    =SUMPRODUCT((MMULT(A2:C4,{1;1;1})>0)*MMULT(A2:C4,{1;1;1}))
    

    【讨论】:

      猜你喜欢
      • 2012-05-14
      • 2018-12-28
      • 2021-01-29
      • 2013-12-07
      • 2013-06-23
      • 2016-02-19
      • 1970-01-01
      • 2020-01-21
      相关资源
      最近更新 更多