Dat*_*ber 3 excel excel-formula dynamic-arrays
我想计算数组的累积/运行乘积。
然而,这两个问题下提供的解决方案并不完全是我想要的:
在这些问题下提供的两个解决方案中,该解决方案要么使用SCAN()我当前不可用的函数,要么使用OFFSET()仅允许range类型输入作为数组,而不是使用诸如 之类的函数生成的数组SEQUENCE()。
更明确地说:我想要计算其运行乘积的数组是=SEQUENCE(D11,1,1-D23,D24)其中 D11 是整数,D23 和 D24 是小数。
有没有人对此有公式内解决方案,或者我是否必须执行中间步骤以首先将序列“写入”范围,然后使用该OFFSET()函数?
编辑1:
上述函数的一个例子SEQUENCE()是{0.97, 0.96, 0.95, ..., 0.75}
编辑2:
OFFSET()如果有一种方法可以在不使用range类型数组作为输入的情况下使用它,我当然会对解决方案感到满意。
编辑3:
这是我试图在没有中间步骤的情况下实现的目标的数值示例。
修改第二个链接中OP的问题起始公式并使用LN和EXP。我们可以使用 MMULT 来到达我们想要的地方:
=LET( a, LN(A1#),
v, SEQUENCE( ROWS(a) ),
h, TRANSPOSE( v ),
stagr, (v - h + 1) * (v >= h),
m, IFERROR(INDEX( a, IF(stagr>0,stagr,-1), ), 0),
EXP(MMULT(m,SEQUENCE(ROWS(m),,1,0))))
Run Code Online (Sandbox Code Playgroud)
您应该能够A1#用您的 SEQUENCE 公式替换:
=LET( a, LN(SEQUENCE(D11,1,1-D23,D24)),
v, SEQUENCE( ROWS(a) ),
h, TRANSPOSE( v ),
stagr, (v - h + 1) * (v >= h),
m, IFERROR(INDEX( a, IF(stagr>0,stagr,-1), ), 0),
EXP(MMULT(m,SEQUENCE(ROWS(m),,1,0))))
Run Code Online (Sandbox Code Playgroud)