添加数据后,自动填充到前一行的新最后一行?

时间:2016-02-18 12:09:41

标签: excel vba excel-vba autofill

我的数据库越来越大了。我每天都会添加大约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)

1 个答案:

答案 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.