這比實際解決方案的任何需求都更爲出乎學術興趣 - 我最近編寫了一些代碼,可以處理大量文件中的一系列過濾器/排序/刪除重複項,但由於我正在逐步完成代碼,看起來這個循環似乎是主要瓶頸,我想了解爲什麼這麼糟糕,以及爲什麼像過濾器和分類這樣的內置函數似乎能夠更快速地完成更困難的操作。在VBA中優化循環性能
For i = 2 To nRows
If (Cells(i, 1) <> Cells(i - 1, 1) Or Cells(i, 2) <> Cells(i - 1, 2)) _
And (Cells(i, 1) <> Cells(i + 1, 1) Or Cells(i, 2) <> Cells(i + 1, 2)) Then
Rows(i).EntireRow.Delete
i = i - 1
nRows = nRows - 1
End If
Next i
VBA中的表調用非常緩慢(與數組或類似)。每次循環時,您的IF語句都會打印8張表格。更快的解決方案是將所有數據讀取到數組中 - 對數組執行所有處理過濾等操作,然後將數組輸出到表單中。 – 99moorem
@ 99moorem謝謝,我試了一下,並得到了顯着的加速。如果你要寫評論作爲答案,我會接受(否則我會像社區維基答案一樣)。 – Nitin
https://stackoverflow.com/questions/30959315/excel-vba-performance-1-million-rows-delete-rows-containing-a-value-in-less – Slai