VBA动态范围求和宏失效求助:第50行至末行T-X列求和至Y列
问题修复:T-X列求和到Y列的VBA宏
原代码的核心问题
- 宏声明错误:
Subb多了一个字母,正确写法是Sub - 最后一行判断逻辑失效:用Y列的
xlUp找最后一行,但Y列初始为空,会导致循环起始行(50)大于结束行(1),循环直接跳过 - 公式拼接方式冗余
修复后的可运行代码
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
相关产品推荐
相关产品推荐

