Excel计算时间随着列数的增加而不成比例地增加

时间:2017-08-25 17:35:01

标签: excel excel-vba excel-2016 vba

我正在寻找一种方法来避免需要转置一堆工作簿。

我在工作表上有大量数据,最近变得大约3倍(行数相同,列数增加3倍)。但是,不是将ClearContents等计算时间增加3倍,而是增加了18倍。

具体来说,我在前360行和前2000列中有数据。但是,我现在需要将列数增加到6000.当我使用宏来清除ClearContents(计算手册,屏幕更新为假)时,需要13秒才能清除360行x 2000列,但需要超过230秒才能清除360行x 6000列。

另外,我在6000列中的大多数列中都没有数据。只是因为我必须偏移一些行(所以,在A列中有数据的行:BXZ现在在DKJ列中有数据:GJH,例如,列A:DJI离开空白)。因此,当我有2000列时,它的非空白单元数量相同。

当我尝试移调所有内容(6000行,360列)时,我发现需要14秒才能清除 - 更快!

当纸张与行相比增加列时,是否有理由需要更长时间?如果是这样,是否有可以更改的设置?我们有一堆工作簿可以向右扩展而不是向下扩展,我真的不期待转换所有这些工作簿。它们有很多相关的VBA宏,所以它并不像copy那样简单 - >粘贴转置让我这样做。

编辑:我用来测试ClearContents速度的代码是:

Sub testDelete2()
Application.Calculation = xlManual
Application.ScreenUpdating = False

Dim time1
    time1 = Timer

'Worksheets("Sheet1").Range("C5:BXY360").ClearContents      '2000 columns
'Worksheets("Sheet1").Range("C5:IPB360").ClearContents      '6000 columns
'Worksheets("Sheet1").Range("E3:MV2041").ClearContents      '2000 rows
Worksheets("Sheet1").Range("E3:MV5723").ClearContents       '6000 rows

Debug.Print Timer - time1

Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub

其中包含数据的单元格具有使用INDEX / MATCH从另一张纸上的3000Rx2000C表中查找数据的公式。在偏移之前或该行的数据范围之后的单元格留空,它们没有任何公式。

0 个答案:

没有答案