我在Excel中使用新的动态(即溢出)公式。我想要一个动态数组,它是另一个动态数组的累加或累计。让我们假设我在A1:A8中有以下动态数据:
A1:A8
12 20 14 13 12 13 26 11
字符串要找到这个数组中的差异是微不足道的:
=OFFSET(A1#,1,0)-A1# 8 -6 -1 -1 1 13 -15 -11
型但是,我如何使用新的动态公式来获得运行总数呢?
12 32 46 59 71 84 110 121
型
0lvr5msh1#
这是另一种使用矩阵乘法的方法
=MMULT(TRANSPOSE((ROW(I3#) <= TRANSPOSE(ROW(I3#)))*I3#),SIGN(I3#))
字符串
du7egjpx2#
累计和公式,使用SCAN()和LAMBDA()--动态溢出数组公式
SCAN()
LAMBDA()
x1c 0d1x的数据·单元格B1中使用的公式-->使用SCAN()和LAMBDA()的方法-->适用于MS 365
B1
=SCAN(0,A1:A8,LAMBDA(x,y,x+y))
字符串·单元格C1中使用的公式-->使用VSTACK()、SCAN()和LAMBDA()的方法-->适用于MS 365 Office内部测试通道
C1
VSTACK()
=VSTACK(A1,SCAN(A1,A2:A8,LAMBDA(x,y,x+y)))
型·单元格D1中使用的公式-->使用LET()、SCAN()和LAMBDA()的方法-->适用于MS 365
D1
LET()
=LET(x,A1:A8, sum,LAMBDA(z,y,z+y), SCAN(0,x,sum))
使用MAP()和LAMBDA()
MAP()
的·单元格B1中使用的公式
=MAP(A1:A8,LAMBDA(x,SUM(A1:x)))
SCAN()函数不再需要LAMBDA()构造,只需要直接引用单个特定的**Excel函数。下面是一个例子。礼貌:感谢JvdV**先生。
Excel
=SCAN(0,A1:A8,SUM)
c8ib6hqw3#
新答案2022-06-20
对于A1中的动态数组,用途:=MMULT(N(ROW(A1#)>=TRANSPOSE(ROW(A1#))),A1#)个如果A1中的动态数组有多个列,则返回每列的累积和,这与我更复杂的Original Answer不同。
A1
=MMULT(N(ROW(A1#)>=TRANSPOSE(ROW(A1#))),A1#)
原答复2022-01-13
通过使用SIGN(I3#),chris neilsen的解决方案会累积绝对值。为了适应负数,请在累积和中将SIGN(I3#)替换为1*(I3#=I3#):=MMULT(TRANSPOSE((ROW(I3#) <= TRANSPOSE(ROW(I3#)))*I3#),1*(I3#=I3#))个或者,生成一个1的动态数组,SEQUENCE(ROWS(I3#),,,0)而不是1*(I3#=I3#)。(我缺乏评论的声誉。
SIGN(I3#)
chris neilsen
1*(I3#=I3#)
=MMULT(TRANSPOSE((ROW(I3#) <= TRANSPOSE(ROW(I3#)))*I3#),1*(I3#=I3#))
SEQUENCE(ROWS(I3#),,,0)
1tu0hz3e4#
这里有一种方法,我已经做到了,但想知道是否有一个更简单/更有效的方法来做到这一点.
=SUBTOTAL(9,OFFSET(A1#,0,0,SEQUENCE(COUNT(A1#))))
sycxhyv75#
这一个解决了一个滚动十二和
=SUBTOTAL(9,OFFSET(A1#,SEQUENCE(COUNTA(A1#),1,0),0,12))
qcbq4gxm6#
您还可以使用以下内容:
=SUBTOTAL(9,INDIRECT(CELL("Address",A1)&":"&CELL("address",OFFSET(A1,SEQUENCE(NumberOfRows,0,0,1),0))))
字符串假设在上面的单元格A1中包含要求和的值的溢出公式。您还可以为SEQUENCE()使用辅助列,如果在列B中这样做,则将使用:用途:
=SUBTOTAL(9,INDIRECT(CELL("Address",A1)&":"&CELL("address",OFFSET(A1,B1#,0))))
这也适用于替代产品,如果您使用=小计(6,...)
我发现上面给出的答案对我不起作用。
我的答案似乎不适用于PRODUCT()和SUM()公式,只适用于SUBTOTAL()。我猜PRODUCT()和SUM()还没有被更改为溢出/数组类型公式,但SUBTOTAL有。
6条答案
按热度按时间0lvr5msh1#
这是另一种使用矩阵乘法的方法
字符串
du7egjpx2#
累计和公式,使用
SCAN()
和LAMBDA()
--动态溢出数组公式x1c 0d1x的数据
·单元格
B1
中使用的公式-->使用SCAN()
和LAMBDA()
的方法-->适用于MS 365字符串
·单元格
C1
中使用的公式-->使用VSTACK()
、SCAN()
和LAMBDA()
的方法-->适用于MS 365 Office内部测试通道型
·单元格
D1
中使用的公式-->使用LET()
、SCAN()
和LAMBDA()
的方法-->适用于MS 365型
使用
MAP()
和LAMBDA()
的
·单元格
B1
中使用的公式型
更新时间:2023/11/15
SCAN()函数不再需要LAMBDA()构造,只需要直接引用单个特定的**
Excel
函数。下面是一个例子。礼貌:感谢JvdV**先生。的
·单元格B1中使用的公式
型
c8ib6hqw3#
新答案2022-06-20
对于
A1
中的动态数组,用途:=MMULT(N(ROW(A1#)>=TRANSPOSE(ROW(A1#))),A1#)
个如果
A1
中的动态数组有多个列,则返回每列的累积和,这与我更复杂的Original Answer不同。原答复2022-01-13
通过使用
SIGN(I3#)
,chris neilsen
的解决方案会累积绝对值。为了适应负数,请在累积和中将SIGN(I3#)
替换为1*(I3#=I3#)
:=MMULT(TRANSPOSE((ROW(I3#) <= TRANSPOSE(ROW(I3#)))*I3#),1*(I3#=I3#))
个或者,生成一个1的动态数组,
SEQUENCE(ROWS(I3#),,,0)
而不是1*(I3#=I3#)
。(我缺乏评论的声誉。
1tu0hz3e4#
这里有一种方法,我已经做到了,但想知道是否有一个更简单/更有效的方法来做到这一点.
字符串
sycxhyv75#
这一个解决了一个滚动十二和
字符串
qcbq4gxm6#
您还可以使用以下内容:
字符串
假设在上面的单元格A1中包含要求和的值的溢出公式。您还可以为SEQUENCE()使用辅助列,如果在列B中这样做,则将使用:用途:
型
这也适用于替代产品,如果您使用=小计(6,...)
我发现上面给出的答案对我不起作用。
我的答案似乎不适用于PRODUCT()和SUM()公式,只适用于SUBTOTAL()。我猜PRODUCT()和SUM()还没有被更改为溢出/数组类型公式,但SUBTOTAL有。