Excel VBA 选择单元格区域时能否使用两个不同的最后行号?
VBA公式批量填充报错修复方案
错误原因排查
- 变量声明拼写错误:
dime ALastrow as long应为Dim ALastrow as long,VBA变量声明关键字为Dim,不存在dime写法 - 范围拼接语法错误:构造L到AC列最后一行范围时,冒号需要作为字符串拼接,原写法
Range("L" & LLastrow : "AC" & LLastrow)语法非法,正确写法为Range("L" & LLastrow & ":AC" & LLastrow) - 填充逻辑缺陷:原粘贴逻辑仅将内容粘贴到A列最后一行对应位置,无法补全两个行号之间的所有空缺行
优化后可运行代码
针对大型数据集优化,去掉低效的Select操作,直接执行填充,运行速度更快
Sub 填充右侧公式() Dim LLastrow As Long Dim ALastrow As Long ' 获取L列最后有内容的行号 LLastrow = Range("L" & Rows.Count).End(xlUp).Row ' 获取A列最后有内容的行号 ALastrow = Range("A" & Rows.Count).End(xlUp).Row ' 判断是否需要填充,避免异常报错 If ALastrow > LLastrow Then ' 直接将已有公式的最后一行向下填充到A列最后一行位置 Range("L" & LLastrow & ":AC" & LLastrow).AutoFill _ Destination:=Range("L" & LLastrow & ":AC" & ALastrow), Type:=xlFillDefault End If End Sub
代码说明
- 新增行号判断逻辑,只有A列行数大于L列时才执行填充,避免异常报错
- 用VBA自带的AutoFill方法实现批量填充,不需要复制粘贴操作,适配大型数据集的性能需求
- 自动保留原公式的相对引用/绝对引用规则,和手动下拉填充效果完全一致
内容的提问来源于stack exchange,提问作者DalAnalyst
相关产品推荐
相关产品推荐

