Excel - SUM 或 SUMIF 二维数组的所有列,其中行由水平函数过滤
Excel - SUM or SUMIF all columns of a 2D array where rows are filtered by a horizontal function
我想对多列求和,但仅限于求和大于 0 的行。一种可行的方法是添加一个额外的列,该列实质上排除了 SUM 小于 0 的行,然后对该额外列求和,如下面的屏幕截图所示。我的愿望是消除辅助列并仅基于 returns 相同结果的原始数据创建单个公式。我尝试将 FILTER() 包含在 SUMIF() 和其他一些可能性中,但无济于事。
注意:如果有帮助,我正在使用支持动态数组的 O365。提前致谢。
如果我理解你的意思,使用 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 的原因是为了避免在单元格留空时可能出现的错误。
在G2
中输入公式:
=SUMPRODUCT((MMULT(A2:C4,{1;1;1})>0)*MMULT(A2:C4,{1;1;1}))
我想对多列求和,但仅限于求和大于 0 的行。一种可行的方法是添加一个额外的列,该列实质上排除了 SUM 小于 0 的行,然后对该额外列求和,如下面的屏幕截图所示。我的愿望是消除辅助列并仅基于 returns 相同结果的原始数据创建单个公式。我尝试将 FILTER() 包含在 SUMIF() 和其他一些可能性中,但无济于事。
注意:如果有帮助,我正在使用支持动态数组的 O365。提前致谢。
如果我理解你的意思,使用 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 的原因是为了避免在单元格留空时可能出现的错误。
在G2
中输入公式:
=SUMPRODUCT((MMULT(A2:C4,{1;1;1})>0)*MMULT(A2:C4,{1;1;1}))