Excel VBA自动填充未按指定范围停止问题及优化需求
问题分析与解决方案
问题根源
- LastRow计算逻辑错误:你用
Range("T4").CurrentRegion.Rows.Count + 1获取目标行号的方式不可靠,CurrentRegion会包含T4周围连续的非空单元格区域,返回的是区域内的行数而非T列最后一行的实际行号,加1后得到的数值完全不符合预期。 - 代码笔误:代码里的
Range("V4:U" & LastRow)存在列标错误(V列的范围写成了V4到U行),这种低级错误会导致填充范围混乱,直接触发错误的填充行为。 - 逐列填充效率低下:逐个列写
FillDown不仅代码冗余,还会拖慢执行速度。
修正后的高效代码
Sub MacroFill() Dim LastRow As Long ' 获取T列最后一个非空单元格的行号,精准匹配T列有效数据行数 LastRow = Cells(Rows.Count, "T").End(xlUp).Row ' 一次性填充U到AZ列从第4行到LastRow的整个区域 Range("U4:AZ" & LastRow).FillDown End Sub
关键说明
Cells(Rows.Count, "T").End(xlUp).Row是获取指定列最后一行行号的标准写法,不受周围空行空列干扰,能准确匹配T列有效数据的行数。- 直接选中
U4:AZ到目标行的整个区域执行FillDown,只需一次操作就能完成所有列的填充,效率远高于逐列处理。 - 确保U4到AZ4单元格有初始填充值,否则
FillDown不会产生任何效果。
内容的提问来源于stack exchange,提问作者TheKidLorry
相关产品推荐
相关产品推荐

