我寫了一個腳本,它檢查列範圍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