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

求助:VBA遍历工作表填充公式仅生效53行问题排查

问题分析与修正

你的代码存在核心逻辑错误,导致填充行数不符合预期,以下是具体问题和修正方案:

问题根源

代码中N = Cells(Rows.Count, "E").End(xlUp).Row这一行没有指定操作的工作表,它始终读取当前活动工作表的E列最后一行行号,而非循环中正在处理的ws工作表。如果你的活动表E列只有53行数据,那么所有工作表都会沿用这个行数,自然只填充53行。

修正后的代码

Sub Step_3()
    Dim ws As Worksheet
    Dim lastRow As Long
    
    For Each ws In ActiveWorkbook.Worksheets
        ' 绑定到当前遍历的工作表,获取其E列最后一行行号
        lastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
        ' 为当前工作表的D列区域批量赋值公式
        ws.Range("D2:D" & lastRow).Formula = "=C2-E2"
    Next ws
End Sub

关键修改点

  • 所有Cells、Rows、Range对象都明确绑定到循环变量ws,确保每一步操作的都是当前遍历的目标工作表,而非固定的活动表。
  • 将变量名N改为lastRow,提升代码可读性(非必须,但属于编码规范优化)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:33:13