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

如何用单行公式实现48个月偏移收入数组的求和运算?

单行公式解决方案

可以借助LET、SEQUENCE和MMULT函数构建权重矩阵,一次性完成所有计算,无需拆分48行:

=LET(
    revenue, $E23:$E70,  // 替换为你的48个月收入曲线所在单元格范围
    customers, E$37:E$84,  // 替换为你的48个月客户数所在单元格范围
    row_nums, SEQUENCE(ROWS(revenue)),
    col_nums, SEQUENCE(,COLUMNS(revenue)),
    weight_matrix, MAX(col_nums - row_nums + 1, 0),
    SUMPRODUCT(customers, MMULT(weight_matrix, TRANSPOSE(revenue)))
)

公式解释

  • LET:定义变量简化公式结构,避免重复引用单元格
  • row_nums/col_nums:生成1到48的行号、列号数组,用于构建权重矩阵
  • weight_matrix:生成48×48的下三角权重矩阵,第i行第j列的值为j-i+1(当j≥i时),否则为0,完全匹配你需要的偏移乘数规则
  • MMULT(weight_matrix, TRANSPOSE(revenue)):计算每个月份客户对应的收入加权总和(将收入数组转为列向量后与权重矩阵相乘)
  • SUMPRODUCT:将每个月份的客户数与对应的加权收入相乘,最终求和得到总结果

替代方案(兼容旧版Excel)

如果你的Excel版本不支持LET,可以直接展开公式:

=SUMPRODUCT(E$37:E$84, MMULT(MAX(SEQUENCE(,48)-SEQUENCE(48)+1,0), TRANSPOSE($E23:$E70)))

关于之前LAMBDA报错的说明

你之前用LAMBDA出现#CALC!错误,大概率是因为没有正确处理数组维度匹配问题(比如尝试对非兼容维度的数组进行迭代运算)。上面的矩阵乘法方法通过广播特性自动处理维度,避免了迭代中的维度冲突,运算效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:30:13