自动填充宏
Macro to Autofill
我想在 P 中创建一个名为 Age of Ticket
的列。它正在计算两个日期,然后自动填充。此宏将用于行数不同的报表。当我使用它时,它基本上是在 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 并模拟点击 ctrl-upArrow。这将找到具有值的第一个单元格,但由于没有值,它会停在顶部单元格 P1,因此 LastRow = 1。因此填充区域为 P2:P1。使用其中包含数据的列。我使用了 K 列,因为它在您的公式中。
这是使用 Record 宏并尝试清理的一个很好的例子。清理代码时,一个重点应该是去掉 .Select
。请参阅 here,了解在没有 .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)
这会自动更改相对引用以保持行正确。
我想在 P 中创建一个名为 Age of Ticket
的列。它正在计算两个日期,然后自动填充。此宏将用于行数不同的报表。当我使用它时,它基本上是在 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 并模拟点击 ctrl-upArrow。这将找到具有值的第一个单元格,但由于没有值,它会停在顶部单元格 P1,因此 LastRow = 1。因此填充区域为 P2:P1。使用其中包含数据的列。我使用了 K 列,因为它在您的公式中。
这是使用 Record 宏并尝试清理的一个很好的例子。清理代码时,一个重点应该是去掉 .Select
。请参阅 here,了解在没有 .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)
这会自动更改相对引用以保持行正确。