感谢楼上的把这么个好帖顶上来,顺便说一下我的理解. 这个宏是表格VS数组 逐一赋值,都在表上操作,速度当然变化不大。 Sub Test2() Dim i As Long, j As Long, buf As Long, C As Variant Application.ScreenUpdating = False Sheets(2).Cells.ClearContents t1 = Time C = Range("A1:CV10000") For i = 1 To 10000 For j = 1 To 100 Worksheets(2).Cells(i, j).Value = C(i, j) Next j Next i Application.ScreenUpdating = True MsgBox Minute(Time - t1) & "分" & Second(Time - t1) & "秒" End Sub 这个宏是数组VS数组 也是逐一赋值,但都在数组中操作,最后再把结果整体赋值到表上 Sub Test3() Dim i As Long, j As Long, buf As Long, C As Variant Application.ScreenUpdating = False Sheets(2).Cells.ClearContents t1 = Time C = Range("A1:CV10000") b = Worksheets(2).Range("A1:CV10000") '再搞个空数组 For i = 1 To 10000 For j = 1 To 100 b(i, j) = C(i, j) '数组VS数组,当然快了 Next j Next i ' 运行到这,数组赋值完毕,用时1秒 Worksheets(2).Range("A1:CV10000") = b '把已得到值的数组整体填到表上,就这句用时要2秒. Application.ScreenUpdating = True MsgBox Minute(Time - t1) & "分" & Second(Time - t1) & "秒" End Sub text2 用时97秒,text3 用时3秒.
这样比较应该合要求了.
[此贴子已经被作者于2006-6-16 19:27:33编辑过] |