VBA:宏循环遍历行和自动填充

时间:2014-06-22 22:14:35

标签: excel vba

编辑:如果我想要自动填充这些单元格,以下代码是否有效?

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行乘4000列。虽然Excel可能不是这项工作的最佳工具,但我已经围绕数据构建了大量基础架构,无法迁移到不同的框架。我正在使用Excel 2007。

在特定的工作表中,当我尝试使用公式自动填充时,我通过将此列的复制和粘贴复制并粘贴到剩余的3000乘3998选项或其中的某些部分来输入整个第二列B(3000 x 1)选择,Excel给我一个内存/资源错误。所以我想循环遍历每一行并自动填充所有列。 (换句话说,我想使用A2自动填充A3:A4000,B2自动填充B3:B4000,等等。)这可能有助于解决内存问题。我将如何编写宏来完成此任务?

如果可能的话,我会对这个问题提出任何建议,也许会对相应的VBA代码提供一些帮助。

1 个答案:

答案 0 :(得分: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