具有动态范围的自动填充

时间:2013-01-04 17:13:05

标签: excel vba dynamic autofill

我不是一个非常有经验的VBA程序员,我知道非常基础。现在我正在构建一个程序来自动化一些工作,使用记录然后清理。它运作良好,直到计算对我来说太长时间。它是一个简单的嵌套IF语句

ActiveCell.FormulaR1C1 = _ "=IF(RC[-16]="""",""MISSING"",IF(RC[-14]="""",""MISSING"",RC[-14]-RC[-16]))"

我们处理的数据范围从10行到几十万不等。到目前为止,我对此并不满意的“解决方案”将自动填充限制在A1:A35000范围内 - 这仍然需要一些优点来处理。这是避免xldown将我带到第100万行的解决方案。此外,我已经尝试过减小纸张尺寸,但也不是一个好的解决方案。

这就是代码的样子 Selection.AutoFill Destination:=ActiveCell.Range("A1:A35000"), Type:= _ xlFillDefault

我想要做的是A)从给定单元格中的数字引用的范围自动填充(所以如果我放的数据是500行,我有一个单元格我输入500,所有自动填充来自A1 :A500)

B)更优选地,这将通过使程序已经识别自动填充的范围来自动完成。

我已经检查了解决方案,无法弄清楚如何将其应用到我的情况中。

感谢您提供的任何帮助/支持。

1 个答案:

答案 0 :(得分:2)

我想您可能正在寻找以下内容......

Dim ws as Worksheet
Set ws = Worksheets("Sheet1")

Dim usedRows as Long

'Option One (not recommended): USED RANGE METHOD 
usedRows = ws.UsedRange.Rows.Count

'Option Two (more robust) .END(xlUp) METHOD (Assuming you have your Data in column "RC")
usedRows = ws.Cells(ws.Rows.Count, "RC").End(xlUp).Row

'YOUR
'CODE
'HERE

Selection.AutoFill Destination:=ws.Range(Cells(1,1),Cells(usedRows,1)), Type:= _ xlFillDefault

如果该列在工作表中具有最常用的任何行。

感谢@scott指出.End(xlUp)选项的优势:)