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

Excel批量求和求助:每N行求和后跳过M行循环操作

解决Excel中“N行求和+M行跳过”循环计算问题

一、公式法

1. 适用于Excel 365/2021(动态数组)

假设目标数据在A列(从A1开始),直接在空白单元格(比如C1)粘贴以下公式,替换N和M为你的实际数值:

=LET(
    data,A:A,
    total_rows,COUNTA(data),
    cycle,N+M,
    start_rows,SEQUENCE(ROUNDUP(total_rows/cycle,0),,1,cycle),
    MAP(start_rows,LAMBDA(x,SUM(OFFSET(data,x-1,0,N,1))))
)

公式逻辑:

  • 用LET定义变量简化结构
  • start_rows自动生成每个求和块的起始行号,步长为「求和行数+跳过行数」
  • MAP遍历每个起始行,通过OFFSET提取对应N行数据并求和

2. 兼容旧版Excel(非动态数组)

拿N=3、M=2举例,数据在A列,在C1输入公式后下拉填充:

=IF(ROW(A1)*(3+2)-4>COUNTA(A:A),"",SUM(OFFSET(A$1,(ROW(A1)-1)*(3+2),0,3,1)))

替换公式里的3和2为你的N、M值即可。公式会自动判断是否超出数据范围,超出时显示空值。

二、VBA宏方法(超大型数据集首选,效率更高)

  1. 按下Alt+F11打开VBA编辑器
  2. 右键左侧工程窗口,插入「模块」
  3. 粘贴以下代码,修改N、M以及结果列的参数:
Sub SumNSkipM()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim currentRow As Long
    Dim sumRow As Long
    Dim N As Integer, M As Integer
    
    ' 按需修改参数
    N = 3 ' 每次求和的行数
    M = 2 ' 每次跳过的行数
    Set ws = ActiveSheet ' 操作当前工作表
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 获取数据最后一行
    sumRow = 1 ' 结果写入的起始行(比如C1就保持sumRow=1)
    
    currentRow = 1
    Do While currentRow <= lastRow
        ' 计算N行求和,写入C列,可把"C"改成其他列标
        ws.Cells(sumRow, "C").Value = Application.Sum(ws.Range(ws.Cells(currentRow, "A"), ws.Cells(currentRow + N - 1, "A")))
        ' 跳转到下一个求和块的起始行
        currentRow = currentRow + N + M
        sumRow = sumRow + 1
    Loop
End Sub
  1. 按F5运行宏,或者回到Excel界面通过「开发工具」→「宏」执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:16:13