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

时间:2014-07-01 21:18:01

标签: excel vba excel-vba

我编写了一个宏,我需要在多个列中使用公式自动填充某些行。

列数是固定的,但每次运行宏时,行数都是可变的。我使用"记录宏"函数和当前宏只将我的行填充到第16行。下面是代码:

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

我显然需要更改" P16"动态的东西。

我试过使用以下内容:

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

我不确定" Dim LR是否为Long"必须放在我的宏的最开始 - 或者它可以放在任何地方吗? 无论如何,我得到了一个错误,我上面试图给出一个"自动填充选择错误" (抱歉,我无法记住确切的错误信息。

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

3 个答案:

答案 0 :(得分:1)

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

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

应该是

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

如果你想找到一个低于D3的范围的结尾你应该使用xlDown:P3

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

会在D3:P3

下面的所有列D:P中为您提供最后一行数据

答案 1 :(得分:1)

我认为你正在寻找这个:

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

但请注意,这会在D列中找到包含任何内容的最后一行 - 如果以后的行中包含Cols EP中的内容但不在Col D中,那么将忽略这些行

答案 2 :(得分:0)

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

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"

这允许我计算已经在#34; C"列中填充的行数,然后采用已存在于单元格D3:P3中的公式,并在范围内自动填充它们,直到列C的最后一行填充。

然后我使用该结构使整个范围成为一个表,在本例中命名为" Table10"。

很棒的东西 - 你的帮助让我得到了我想要的东西。感谢