VBAdynamic范围扩展行

我正在尝试在VBA中做一个简单的dynamic范围任务。

在这里输入图像说明

上表中有从外部网站下载的数据。 新行将被添加到它每天。

在这里输入图像说明

这第二个表引用第一个。 例如,这个表中的date列将是= USA!A18。

我想编写一个VBA脚本,以便无论何时将新数据添加到第一个表中,我都可以运行该macros来扩展第二个表的行/公式以添加新数据。

因此,如果将5个新行添加到第一个表中,macros将在第二个表中将现有行和公式从列A扩展到W。 它不能有任何空行或#VALUE错误,而不会破坏电子表格中的其他代码。 数据从A9开始并延伸到W9。

我试图执行以下内容:

Sub extendrows() Dim lastRow As Long lastRow = Worksheets("USA").Range("A" & Rows.Count).End(xlUp) Worksheets("USA defprob").Range("A9:W9").AutoFill Destination:=Range("A9:W" & lastRow) End Sub 

但我得到一个内存错误,我怀疑是因为它粘贴数千空白行而不是停止。 我怎样才能调整这个代码来做我需要的macros呢?

你可以试试这个:

 Option Explicit Sub extendrows() Dim nDataRows As Long With Worksheets("USA") nDataRows = .Range("A" & .Rows.Count).End(xlUp).Row - 2 ' assuming data start from row 3 in "USA" End With With Worksheets("USA defprob").Range("A9:W9") .AutoFill Destination:=.Resize(nDataRows) End With End Sub 

而不是试图dynamic调整你的范围,把数据放在一个Excel表格,让Excel为你做的工作。 select您的数据,然后按CTRL + T将范围转换为表格。 Excel会自动创build代表整个数据集,单个列的命名范围,甚至是不包含标题行的数据集。

所以,如果创build的表被称为“Table1”,那么使用引用“Table1”来引用表中除标题行之外的所有单元格。

由于Excel根据您创build的列标题创build了命名范围,因此引用各个列也更容易。 例如,如果“Table1”中的第一列被称为“MyFirstColumn”,则使用“Table1 [MyFirstColumn]”来引用表的整个列(不包括标题)。

如果您想知道表中的任何部分使用了哪个命名范围,只需在表格外至less有两行或两列的单元格。 键入等号,然后在表格中select一个范围。 例如,当您select多个相邻的列(仅数据,没有标题)时,范围名称看起来像“Table1 [[MyFirstColumn]:[MySecondColumn]]”。