我想计算数组的累积/运行乘积。
然而,这两个问题下提供的解决方案并不是我想要的:
- Cumulated Products (Multiplications) of Array in Excel
- Excel Dynamic Array formula to create a running product of a column
在这些问题下提供的两种解决方案中,解决方案都使用了我目前无法使用的 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:
如果没有 range 类型数组作为输入,我当然会很高兴有 OFFSET()
解决方案。
编辑 3:
这是我在没有中间步骤的情况下尝试实现的数值示例。
最佳答案
从 second link 修改 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))))
您应该能够用您的 SEQUENCE 公式替换 A1#
:
=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))))
关于不带 SCAN 或 OFFSET 的数组的累积积/运行积的 Excel 动态解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74183936/