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

VBA动态范围求和宏失效求助:第50行至末行T-X列求和至Y列

问题修复:T-X列求和到Y列的VBA宏

原代码的核心问题

  1. 宏声明错误:Subb多了一个字母,正确写法是Sub
  2. 最后一行判断逻辑失效:用Y列的xlUp找最后一行,但Y列初始为空,会导致循环起始行(50)大于结束行(1),循环直接跳过
  3. 公式拼接方式冗余

修复后的可运行代码

Sub Zad()
    Dim lastRow As Long
    ' 以求和区域的最后一列(X列)为准,获取真实数据的最后一行
    lastRow = Cells(Rows.Count, "X").End(xlUp).Row
    
    ' 避免数据行不足50时触发错误
    If lastRow < 50 Then Exit Sub
    
    Dim x As Long
    For x = 50 To lastRow
        ' 直接拼接A1格式的求和公式
        Cells(x, "Y").Formula = "=SUM(T" & x & ":X" & x & ")"
    Next x
End Sub

高效优化方案(批量写入,无需循环)

如果数据量较大,循环逐个写入公式效率低,可直接给整列区域批量赋值:

Sub Zad_Fast()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, "X").End(xlUp).Row
    
    If lastRow < 50 Then Exit Sub
    
    ' 一次性给Y50到Y最后一行写入动态求和公式
    Range("Y50:Y" & lastRow).Formula = "=SUM(T@:X@)"
End Sub

这里的@是Excel的行占位符,批量赋值时会自动对应到每一行的行号,执行速度远快于循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:10:28