不带 SCAN 或 OFFSET 的数组的累积积/运行积的 Excel 动态解决方案

标签 excel excel-formula dynamic-arrays

我想计算数组的累积/运行乘积。

然而,这两个问题下提供的解决方案并不是我想要的:

  1. Cumulated Products (Multiplications) of Array in Excel
  2. 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:

这是我在没有中间步骤的情况下尝试实现的数值示例。

Example Screenshot

最佳答案

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))))

enter image description here

您应该能够用您的 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/

相关文章:

excel - VBA - 花括号 {} 等效操作

excel - 如何从随机日期中得到下周四?

excel - 用于显示 Excel 数据的 Java 库

vba - 哪个 Excel 公式可以在没有 VBA UDF 的情况下执行此操作?

c - 在C中将一个数组中的项目附加到另一个数组的末尾

c# - 如何将结构向量从 Rust 返回到 C#?

sql - Bigquery 上的长 ID 正在使用科学计数法导入 excel,不要导入正确的数字

vba - Excel 2016 中的多个 "AND"、 "OR"条件和引用相邻单元格

c# - 有没有什么方法可以像在 C# 中那样使用不变区域性在 Excel 中格式化日期单元格

c++ - 创建动态数组静态成员(计数器)时增加