如何在Excel中对(新)动态数组使用求和函数

如何在Excel中对(新)动态数组使用求和函数,excel,excel-formula,dynamic-arrays,Excel,Excel Formula,Dynamic Arrays,假设3列(A、B、C)是动态数组,我想创建第四个/最后一个动态数组公式,它是D列中每行这3列的总和。为了清楚起见,我正在查找最后一列中每行的逐行总和 这将有助于: =A2+B2+C2 如何通过使用SUM函数实现同样的功能?我提出这个问题的原因是,它更易于在更大范围的数据上使用 下面给出一个#REF!错误: =SUM(A2:C2#)问题是SUM、MAX、MIN都允许数组,并在整个数组上进行整体运算。所以我们需要使用一些使用数组和溢出单个结果的东西。这就是创建MMULT的目的: =MMULT(A2#

假设3列(A、B、C)是动态数组,我想创建第四个/最后一个动态数组公式,它是D列中每行这3列的总和。为了清楚起见,我正在查找最后一列中每行的逐行总和

这将有助于:
=A2+B2+C2

如何通过使用SUM函数实现同样的功能?我提出这个问题的原因是,它更易于在更大范围的数据上使用

下面给出一个#REF!错误:
=SUM(A2:C2#)

问题是SUM、MAX、MIN都允许数组,并在整个数组上进行整体运算。所以我们需要使用一些使用数组和溢出单个结果的东西。这就是创建MMULT的目的:

=MMULT(A2#:C2#,TRANSPOSE(COLUMN(A2:C2)^0))


刚通过动态阵列实现的序列:

=MMULT(A2#:C2#,SEQUENCE(COLUMNS(A2:C2),,1,0))

绝对传奇。我一直在努力解决这个问题。非常感谢你。我以前从未使用过MMULT,只是针对类似问题使用过SUMPRODUCT。我的问题是动态总结溢出表中的最后几列,我能够调整您的解决方案

就上述问题而言,如果三个溢出列是一个溢出表,且行和列在一个溢出范围内,则它将是:

=MMULT(A2#,SEQUENCE(ROWS(A2#)),SEQUENCE(COLUMNS(A2#)),,1,0))

对于每列的总和(假设A1#是源数据的动态范围):

=小计(9,偏移量(A1#,0,顺序(1,列(A1#))-1,行(A1#),1))


只需将
SUBTOTAL
函数的第一个参数更改为使用任何可用的聚合函数(min、max、average等)。通过一些调整,这可以用于行总数。

当我尝试上面的Scott Craner公式时,我收到一个值错误,可能与我在不同动态长度的数据列上测试它有关

即使表达式A2#:C2#返回的矩阵宽度为3列,高度为三列中行数最多的一列(为任何空白单元格填充零),MMULT似乎不喜欢该表达式和结果矩阵作为第一个参数。但是,我发现我可以对其进行如下修改以使其正常工作:


=MMULT((A2:C2*1),SEQUENCE(列(A2:C2),,,0))

在公式中使用
的原因是什么
=SUM(A2:C2)
可以根据需要工作。使用#将其转换为动态数组公式。这完全改变了它的性质,因为现在它会自动调整其长度以匹配数据的大小,而无需在每次数据集长度变化时手动复制公式changes@ScottCraner-那不是一行一行的总和。啊,我以为他们想要总数,不是个人@BigBenI认为这很混乱,因为OP提到了
=A2+B2+C2
,而
指的是溢出范围,这也让我相信OP是在总数之后。然而,
SUM(A:C)
没有被使用,这让我相信他实际上是在逐行计算之后。这并不漂亮,但很有效。然而,我希望有一些更优雅/自然的东西…@Sam问题是SUM、MAX、MIN都允许数组,并在完整数组上进行整体运算。所以我们需要使用一些使用数组和溢出单个结果的东西。这就是MMULT构建的目的。我可能错了,但我怀疑还会有比这更优雅/自然的ScottCraner这太棒了!我用它来替换行上的SUMIF。类似于:
=MMULT(A2:C2),转置(-(A1:C1