You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于布尔与标量数组生成复合标量乘积数组的Excel公式方案咨询

高效计算行向累积乘积的Excel单单元格公式方案

任务

基于输入的布尔值数组与标量数组,输出标量乘积数组。

要求

  • 解决方案需为单单元格公式,禁止使用VBA
  • 支持动态适配不同输入数组

输入说明

输入数组A(布尔值)

>=2023202420252026
20231000
20241100
20251110
20261111

输入数组B(标量值)

2023202420252026
1.2511.21.05
1.351.111.2
1.251.151.051.05
1.311.11.15
1.251.11.41.35

输出说明

输出数组(复合标量)

2023202420252026
1.251.251.51.575
1.351.4851.4851.782
1.251.43751.5093751.58484375
1.31.31.431.6445
1.251.3751.9252.59875

实际逻辑

输出数组的每一列对应输入数组B当前列及之前所有列的行向累积乘积:

  • 第一列仅为B数组2023年的标量值
  • 第三列为B数组每行中2023、2024、2025年的标量乘积(例如第一行第三列值为 1.25*1*1.2)
  • 输出数组与B数组列数完全一致

注意事项

  • 输入数组A仅需通过布尔值标记每行需参与相乘的元素,格式可按需调整
  • 输入数组B必须保持给定的原始形式

现有问题

使用MAKEARRAY()的暴力遍历方案,在B数组包含数千行时运行效率极低,需寻求高效的单单元格公式解决方案。

高效解决方案

利用对数转换+矩阵运算的思路,将乘法转化为加法实现高效计算,公式如下:

=EXP(MMULT(--(COLUMN(B1:E5)>=TRANSPOSE(COLUMN(B1:E5))),LN(B1:E5)))

公式拆解

  1. COLUMN(B1:E5)>=TRANSPOSE(COLUMN(B1:E5)):自动生成与数组A逻辑一致的布尔矩阵,标记每行中当前列及之前的所有列(即需要相乘的范围)
  2. LN(B1:E5):将标量值转换为对数,把乘法运算转化为加法运算,大幅降低计算复杂度
  3. MMULT(...):通过矩阵乘法完成每行的对数累加,得到累积和矩阵
  4. EXP(...):将对数累积和还原为原始的累积乘积,得到最终输出数组

适配方法

只需将公式中的B1:E5替换为你的实际B数组区域即可,公式会自动适配区域的行数列数,无需手动调整范围。

内容的提问来源于stack exchange,提问作者mintti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:44:52