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

Excel VBA:如何递增For Each循环的范围?

解决VBA每隔7行插入SUM公式的问题

你确实不应该用For Each循环,因为它会遍历范围内的每一个单元格,完全不符合你“每隔7行插入公式”的需求。另外rcell = rcell +7的错误核心在于:Range对象不能直接和整数做运算,要定位下一个目标单元格,得用行号控制或者Offset方法。

修正后的代码

Option Explicit

Sub Insert_Formula_Sum()
    Dim LastRow As Long, i As Long, c As Long
    Dim targetRow As Long
    Dim LI As Worksheet
    Set LI = Sheets("Lumber Inventory")
    
    ' 获取A列数据的最后一行
    LastRow = LI.Range("A" & LI.Rows.Count).End(xlUp).Row
    
    ' 初始化SUM区间的起始、结束行
    i = 3
    c = 3
    
    ' 从第8行开始,每隔7行插入公式,直到超出数据范围
    For targetRow = 8 To LastRow Step 7
        ' 给D列目标行设置SUM公式
        LI.Cells(targetRow, "D").Formula = "=SUM(D" & i & ":D" & c & ")"
        ' 递增SUM的区间范围
        i = i + 7
        c = c + 7
    Next targetRow
End Sub

关键修正点

  • 替换For Each为带步长的For循环:For targetRow = 8 To LastRow Step 7里的Step 7是核心,它让循环每次跳7行,精准匹配“每隔7行插入”的需求。
  • 修复范围引用错误:原代码Range("D8:D" And LastRow)是语法错误,改用LI.Cells(targetRow, "D")直接定位目标单元格,同时始终指定工作表LI,避免因活动工作表变化导致的错误。
  • 移除错误的rcell = rcell +7:改用行号变量targetRow控制位置,逻辑更清晰,彻底解决类型不匹配问题。

额外优化提示

如果你的需求是SUM连续7行的区间(比如第一次SUM(D3:D9),第二次SUM(D10:D16)),只需把初始的c = 3改成c = 9,后续c = c +7就能自动生成对应的7行区间公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:50:51