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

Posted

技术标签:

【中文标题】添加数据后从先前的最后一行自动填充到新的最后一行?【英文标题】:Autofill to new last row from previously last row after data is added? 【发布时间】:2016-02-18 12:09:40 【问题描述】:

我有一个越来越大的数据库。我每天添加大约 100 行信息。

我有大约 20 列自动填充计算等。其中一些列使用 Vlookups 从一个非常大的文件中提取。这需要很长时间,因为它每天都会拉动整个列,因为我当前的自动填充宏从第 2 行开始。

有没有办法编写宏,以便它从前一个“最后一行”自动填充,所以它只自动填充 100 个左右的新行而不是几千行?

我尝试了以下方法,但没有成功: Range("BZ2").AutoFill Destination:=Range("BZ2:BZ" & LastRow) 是我使用的自动填充的 VBA 代码之一的示例。 LastRow 是粘贴新数据后的最后一行。理想情况下,我希望它从 OldLastRow 开始,这将是我粘贴新数据之前的最后一行。我试过Range("BZ" & OldLastRow).AutoFill Destination:=Range("BZ" & OldLastRow & ":BZ" & LastRow) 没有运气。

【问题讨论】:

你可以使用 Selection.End(xlUp).Select 我想。在包含数据的列下方选择一个范围,然后向上移动到最后一行并将其存储在变量中。转到要自动填充的列并选择一个远低于该范围的范围,然后向上,将该地址存储在变量中。然后你总是可以使用 offset(0,1) 等等。 我将如何实现它以使用自动填充?我的问题是自动填充似乎不允许我使用变量来替换我想要开始的单元格的实际数量。所以 BZ2 有效,但 BZ & OldLastRow 没有。 或者显然它确实开始工作了。我想我有一些小问题,比如月经或 IDK 出了什么问题……哈哈 【参考方案1】:

试试这个。

    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.

【讨论】:

以上是关于添加数据后从先前的最后一行自动填充到新的最后一行?的主要内容,如果未能解决你的问题,请参考以下文章

通过将活动单元格的范围提供给列的最后一行来显示自动填充命令范围中的错误

范围自动填充一行,最好只使用变量

如何自动填充活动单元格的列直到最后一行

运行代码时,它返回 - 范围类的自动填充方法在代码的最后一行失败:VBA

Delphi在提取数据填充到Grid上面总是一行行的闪烁加载、如何解决?

将填充应用于段落的最后一行