macros自动填充

我想在P中创build一个名为Age of Ticket的列。 它正在计算两个date,然后自动填充。 这个macros将被用于改变行数的报告。 当我使用它时,它基本上是在P2上进行计算,然后在P1上进行计算(标签是),并且不自动填充。

 Dim LastRow As Long LastRow = Range("P65000").End(xlUp).Row Range("P1").Select ActiveCell.FormulaR1C1 = "Age of Ticket" Range("P2").Select ActiveCell.FormulaR1C1 = "=RC[-5]-RC[-8]" Range("P2").Select Selection.AutoFill Destination:=Range("P2:P" & LastRow) Range("P2:P3000").Select ActiveWindow.SmallScroll Down:=210 

[结果]

在这里输入图像描述

问题是添加的列是空的。 所以你的代码告诉excel去P65000和模仿点击ctrlupArrow 。 这将find第一个单元格的值,但由于没有值,所以它停在顶部单元格P1,因此LastRow = 1。所以填充区域是P2:P1。 使用包含数据的列。 我使用了K列,因为它在你的公式中。

这是使用Recordmacros并尝试清理的一个很好的例子。 清理代码时,一个重点应该是摆脱.Select 。 在这里看到一个伟大的汇编的方法来引用范围没有.Select

同样在使用.FormulaR1C1 ,整个范围可以一次设置,不需要填充。

将上面的代码更改为:

 Dim LastRow As Long LastRow = Range("K65000").End(xlUp).Row Range("P1").value = "Age of Ticket" Range("P2:P" & LastRow).FormulaR1C1 = "=RC[-5]-RC[-8]" 

另外,如果您想使用自动填充,则不需要使用r1c1公式。

 Range("P2").Formula = "=K2-H2" Range("P2").AutoFill Destination:=Range("P2:P" & LastRow) 

这会自动更改相对引用以保持行更正。