VBA:循环遍历行和自动填充的宏
Posted
技术标签:
【中文标题】VBA:循环遍历行和自动填充的宏【英文标题】:VBA: Macro to loop through rows and Autofill 【发布时间】:2014-06-22 22:14:34 【问题描述】:编辑:如果我想自动填充这些单元格,下面的代码会起作用吗?
Sub BC_Edit()
' Define width and height of table
Dim datasetWidth, datasetHeight As Integer
' Find values for width and height of table
datasetWidth = Range("A1").End(xlToRight).Column
datasetHeight = Range("A1").End(xlDown).Row
' Loop over each column
For x = 1 To datasetWidth
Set sourceRange = Cells(2,x)
Set fillRange = Range(Cells(3, x), Cells(datasetHeight, x))
sourceRange.AutoFill Destination:=fillRange
Next
End Sub
我正在处理几个非常大的数据集 - 每个数据集大约 3000 行 x 4000 列。虽然 Excel 可能不是这项工作的最佳工具,但我已经围绕数据构建了大量基础设施,无法迁移到其他框架。我正在使用 Excel 2007。
在一个特定的工作表中,当我尝试使用我为整个第二列 B (3000 x 1) 输入的公式进行自动填充时,通过将此列复制并粘贴到剩余的 3000 x 3998 选择中,或其中的一部分选择,Excel 给我一个内存/资源错误。所以我想循环遍历每一行并自动填充所有列。 (换句话说,我想使用 A2 自动填充 A3:A4000,使用 B2 自动填充 B3:B4000,等等。)也许这有助于解决内存问题。我将如何编写宏来完成此操作?
如果可能的话,我将不胜感激有关此问题的任何建议,以及有关适当 VBA 代码的一些帮助。
【问题讨论】:
如果你不介意,可以分享一下公式吗?复杂吗?我只是认为,根据要编写的公式的复杂性,获得所需内容的最佳方法会有所不同。 【参考方案1】:这是一个非常基本的宏示例,用于将第 2 列以下的列设置为第 2 列的公式。 最好将它附加到按钮或类似的东西上,而不是每次打开工作表时都运行。
Sub Button_Click()
' Define width and height of table
Dim datasetWidth, datasetHeight As Integer
' Find values for width and height of table
datasetWidth = Range("A1").End(xlToRight).Column
datasetHeight = Range("A1").End(xlDown).Row
' Loop over each column
For x = 1 To datasetWidth
' From row 3 to the height of data, set the formula of the cells to
' the formula contained in row 2 of that column
Range(Cells(3, x), Cells(datasetHeight, x)).Formula = Cells(2, x).Formula
Next
End Sub
【讨论】:
以上是关于VBA:循环遍历行和自动填充的宏的主要内容,如果未能解决你的问题,请参考以下文章