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

Excel动态OFFSET求和:非零起始最多取4个月且不超过当前月

Excel累计求和公式修改方案

原有公式问题

  1. OFFSET函数的参数分隔符错误使用了点,需替换为英文逗号
  2. 偏移宽度直接写了固定值4、8,没有加入当前月的边界判断,导致统计到当前月之后的无效数据

前置设置

找一个空白单元格存储当前月对应的列号(示例中用$P$1存储,可自行修改位置):
你的表头A~J列依次对应Jan、Feb、Mar、Apr、Jun、Jul、Aug、Oct、Nov、Dec,若当前月为Nov,对应I列,就把$P$1的值设为9,后续修改当前月仅需更新该单元格即可。

修改后公式

第1周期(首非零值开始最多4个月)求和公式

适配365/2021及以上版本(支持LET函数,逻辑更清晰):

=IFERROR(LET(
    first_col, MATCH(TRUE,A2:J2<>0,0),
    end_col, MIN(first_col+3,$P$1),
    IF(first_col>$P$1,0,SUM(INDEX(A2:J2,first_col):INDEX(A2:J2,end_col)))
),"")

适配所有Excel版本的兼容写法:

=IFERROR(IF(MATCH(TRUE,A2:J2<>0,0)>$P$1,0,SUM(INDEX(A2:J2,MATCH(TRUE,A2:J2<>0,0)):INDEX(A2:J2,MIN(MATCH(TRUE,A2:J2<>0,0)+3,$P$1)))),"")

第2周期(首非零值开始第5~8个月)求和公式

适配365/2021及以上版本:

=IFERROR(LET(
    first_col, MATCH(TRUE,A2:J2<>0,0),
    start_col, first_col+4,
    end_col, MIN(first_col+7,$P$1),
    IF(start_col>$P$1,0,SUM(INDEX(A2:J2,start_col):INDEX(A2:J2,end_col)))
),"")

适配所有Excel版本的兼容写法:

=IFERROR(IF(MATCH(TRUE,A2:J2<>0,0)+4>$P$1,0,SUM(INDEX(A2:J2,MATCH(TRUE,A2:J2<>0,0)+4):INDEX(A2:J2,MIN(MATCH(TRUE,A2:J2<>0,0)+7,$P$1)))),"")

效果验证

按你给出的测试数据,将$P$1设为9(对应当前月为Nov):

  • 第一行首非零在C列(列号3):第一周期取CF列,和为2+3+4+5=14;第二周期取GI列,和为6+7+2=13,和预期结果完全匹配
  • 第二行首非零在G列(列号7):第一周期取G~H列,和为2+1=3;第二周期起始列11大于当前月列号9,返回0,和预期结果完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:54:06