Excel VBA向表格新增列填充公式如何动态定位表格最后一行
VBA动态填充公式到最后一行的实现方案
方案1:直接批量写入公式(最推荐,无需选中单元格,执行效率更高)
你之前的LastRow变量是行号数值,只需要和列字母拼接成完整的单元格范围字符串即可,不需要单独写首行再填充,直接给整个范围赋值公式,Excel会自动适配相对引用:
' 建议优先用有数据的列计算最后一行,避免UsedRange有空白单元格导致取值不准 LastRow = Cells(Rows.Count, "D").End(xlUp).Row ' 这里D列是你公式引用的左侧列,有完整数据 ' 直接给E2到E最后一行的所有单元格写入公式 Range("E2:E" & LastRow).FormulaR1C1 = "=RC[-1]=R[-1]C[-1]"
方案2:首行写入后用AutoFill填充
如果你需要保留先写首行再填充的逻辑,用以下代码即可:
LastRow = Cells(Rows.Count, "D").End(xlUp).Row ' 写入首行公式 Range("E2").FormulaR1C1 = "=RC[-1]=R[-1]C[-1]" ' 从E2自动填充到E&LastRow Range("E2").AutoFill Destination:=Range("E2:E" & LastRow)
错误原因说明
- 你之前直接替换E10为LastRow不生效,是因为单元格范围需要字符串格式的地址,需要把列标识和行号用
&拼接成完整字符串 - 空列用
xlDown无法定位最后一行,是因为该方法会从当前单元格向下找第一个非空单元格,空列会直接跳到工作表最大行,所以要基于已有数据的列计算最后一行
内容的提问来源于stack exchange,提问作者Romel
相关产品推荐
相关产品推荐

