改善VBA的时间

时间:2015-06-16 14:59:43

标签: excel vba excel-vba

With ThisWorkbook.Worksheets("test")
    Lastrow = .Cells(.Rows.count, 2).End(xlUp).Row
         For i = LBound(sPrincipal) To (UBound(sPrincipal) - 3) 
                 .Cells((Lastrow + 1), 1) = sPrincipal(i)
                 .Cells((Lastrow + 1), 2) = sInterest(i)
                 .Cells((Lastrow + 1), 3) = sBalance(i)
                  Lastrow = Lastrow + 1
         Next i
End With

我需要定期填充大约10万行(也比此处显示的列数多),需要加快速度,因为这需要超过2-3个小时。如果有办法加速这个过程,任何人都可以建议。提前谢谢。

1 个答案:

答案 0 :(得分:2)

dim entries as Integer

entries = UBound(sPrinciple) - LBound(sPrinciple)
With ThisWorkbook.Worksheets("test")
    Lastrow = .Cells(.Rows.count, 2).End(xlUp).Row
    .Cells((Lastrow + 1), 1).Resize(entries, 1).Value = _
        WorksheetFunction.Transpose(sPrinciple)
    .Cells((Lastrow + 1), 2).Resize(entries, 1).Value = _
        WorksheetFunction.Transpose(sInterest)
    .Cells((Lastrow + 1), 3).Resize(entries, 1).Value = _
        WorksheetFunction.Transpose(sBalance)
End With

这样做的缺点是,您一次只能粘贴65536行(Excel 2003行限制。我建议您批量运行代码,一次处理多行,直到您完成整个数据集。