我写了一个脚本,它检查列范围4(列D)中的非空值的单元格范围,如果它发现非空值,它复制值并将其粘贴到列范围6(列F)中的单元格中。该脚本运行,但速度非常慢,该脚本需要5分钟来处理并完成其运行。有没有什么办法来改进这个脚本,以便它可以在复制和粘贴值之前预先检查范围?看来,复制/粘贴功能正在放慢速度。Excel VBA - 循环检查整个列范围而不是每个单元格
代码如下
Sub ArrayCopyPaste()
Dim J as Integer
Application.Calculation = xlCalculationManual
For J = 2 To 500
If Cells(J, 4).Value <> "" Then
Cells(J, 4).Copy
Cells(J, 6).PasteSpecial Paste:=xlPasteValues
End If
Next J
Application.Calculation = xlCalculationAutomatic
End Sub
你能排序吗?使用公式怎么样?我的意思是,如果你想做的是简单的“IF公式”可以做到这一点。为什么选择VBA? – L42 2014-10-01 02:27:11
还有更多的代码遍历列表,找到空白并删除它们(有效地创建一个综合列表)。你可以使用公式来做到这一点,但它是难以置信地对内存征税(该表用于有一个数组公式,但if循环做得更有效) – PootyToot 2014-10-01 02:32:06
好吧,我发布了一些东西。这在不到一秒的时间内处理你的例子。 – L42 2014-10-01 02:37:18