如何在Excelmacros中自动填充已知列数但可变行数的公式

我在写一个macros,我需要自动填充一些行与公式,跨多个列。

列数是固定的,但每次运行macros时,行数都是可变的。 我使用“loggingmacros”函数,当前的macros只填充我的行到第16行。下面是代码:

Range("D3:P3").Select Selection.AutoFill Destination:=Range("D3:P16") 

我显然需要把“P16”改成dynamic的。

我试图使用以下内容:

 Dim LR As Long LR = Range("D3:P3" & Rows.Count).End(xlUp).Row Range("B3:P3").AutoFill Destination:=Range("B3:P" & LR) 

我不确定“Dim LR as Long”是否必须放在macros的一开始,还是只能放在任何地方? 无论如何,我得到一个错误与我上面给了我一个“自动selectselect错误”(抱歉,我不记得确切的错误信息。

有人能指出我正确的方向吗?

LR可以在首次使用它之前的任何地方声明,但最好在开始时使用它。 LR的范围不正确。

  LR = Range("D3:P3" & Rows.Count).End(xlUp).Row 

应该

  LR = Range("D3:P3").End(xlUp).Row 

如果您正在尝试查找范围的末尾,请使用xlDown BELOW D3:P3

  LR = Range("D3:P3").End(xlDown).Row 

会给你所有列中的数据的最后一行D:P在D3:P3以下

我想你正在寻找这个:

 LR = Range("D3:P" & Rows.Count).End(xlUp).Row 

但是请注意,这将find列D中的任何内容的最后一行 – 如果后面的行在Cols EP中有内容但不在Col D中,那么这些行将被忽略

所以我使用了提供给我的信息,并设法得到以下内容:

 Dim LR As Long LR = Range("C3:P" & Rows.Count).End(xlDown).Row Range("D3:P3").AutoFill Destination:=Range("D3:P" & LR) ActiveSheet.ListObjects.Add(xlSrcRange, Range("$D$2:P" & LR), , xlYes).Name = _ "Table10" 

这使我可以计算已经在列“C”中填充的行数,然后获取单元格D3:P3中已经存在的公式,并自动向下填充整个范围,直到C列的最后一个填充行。

然后我使用这个结构来使整个范围成为一个表,在这种情况下名为“Table10”。

伟大的东西家伙 – 你的帮助让我得到我想要的。 谢谢