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:循环遍历行和自动填充的宏的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 插入一行并自动填充

Excel VBA自动填充只返回公式

Excel VBA 自动填充问题

自动填充到vba中的命名范围

使用In-cell下拉列表中的值自动填充单元格 - VBA

为啥我的宏的自动填充公式被修改了?