Office 365中实现数组的累积乘积(动态数组公式方案)
数组累积乘积解决方案(无BYROW/BYCOL函数)
针对你的需求,利用对数转换+矩阵累积和+指数还原的思路可以高效实现动态数组的累积乘积,完全符合你的限制条件,具体方案如下:
核心公式
=EXP(MMULT(--(ROW(Rates)>=TRANSPOSE(ROW(Rates))),LN(Rates)))
公式拆解
LN(Rates):将Rates中的每个正数转换为自然对数(因所有值严格正,无需处理错误)--(ROW(Rates)>=TRANSPOSE(ROW(Rates))):生成一个n×n的下三角矩阵,主对角线及下方元素为1,上方为0,用于筛选截至当前行的所有元素MMULT(...):通过矩阵乘法计算每行的对数累积和(下三角矩阵与对数数组相乘,本质是对每行之前的所有对数求和)EXP(...):将对数累积和还原为原始数值的累积乘积
方案优势
- 动态适配:依赖
ROW(Rates)自动识别向量长度,Rates更新后结果自动同步 - 无特殊函数:不使用BYROW/BYCOL,适配无此类函数的Office 365版本
- 纯工作表函数:无需VBA,保持xlsx格式兼容性
- 高效计算:避免构造冗余矩阵再求列乘积的资源消耗
备选方案(基于你构造矩阵的思路)
如果坚持使用你构造的下三角矩阵求列乘积,可使用数组输入公式(Office 365中直接回车即可,旧版需按Ctrl+Shift+Enter):
=PRODUCT(IF(ROW(Rates)<=TRANSPOSE(ROW(Rates)),Rates,""),2)
注:此方法效率略低于对数转换方案,尤其当Rates向量较长时。
内容的提问来源于stack exchange,提问作者Dattel Klauber
相关产品推荐
相关产品推荐

