我的数据库越来越大了。我每天都会添加大约100行信息。
我有大约20个自动填充计算等的列。其中一些列使用Vlookup
从非常大的文件中提取。这需要永远,因为它每天都会拉动整个列,因为我当前的自动填充宏从第2行开始。
有没有办法编写宏,以便自动填充前一行"最后一行"所以它只能自动填充100个左右的新行而不是几千个?
我试过以下但没有运气:
Range("BZ2").AutoFill Destination:=Range("BZ2:BZ" & LastRow)
是我使用的自动填充的一个VBA代码示例。 LastRow
是粘贴新数据后的最后一行。我希望理想情况下从OldLastRow
开始,这将是我粘贴新数据之前的最后一行。我没有运气就试过Range("BZ" & OldLastRow).AutoFill Destination:=Range("BZ" & OldLastRow & ":BZ" & LastRow)
。
答案 0 :(得分:0)
试试这个。
Dim LastRow As Long
With ActiveSheet
'This will get you the OldLastRow. Add +1 to the end to get the first empty row if you need it.
'The "A" in .Rows.Count, "A" should be replaced with a column that will always have data in every row.
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("BZ2").AutoFill Destination:=Range("BZ2:BZ" & LastRow)
'This will pause the macro until Calculations are complete.
Do While Application.CalculationState <> xlDone
DoEvents
Loop
End With
理想情况下,您将从粘贴数据的位置进行自动填充,因此如果您只想自动填充新数据,则不希望在其中的任何位置放置“BZ2”。
你也可以尝试这个。
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "BZ").End(xlUp).Row
.Range("BZ2").AutoFill Destination:=Range("BZ" & LastRow & ":BZ" & Cells(Rows.Count, "BY").End(xlUp).Row)
Do While Application.CalculationState <> xlDone
DoEvents
Loop
End With
This is assuming you only have one column of calculations. if not change the "BZ" & LastRow & ":BZ" to "BZ" & LastRow & ":CA" or whatever your last calculated column is.