sca*_*ity 4 excel optimization vba row excel-vba
我有几个非常大的excel数据文件,我需要遍历它们并删除列T中单元格值为1的所有行.现在我的代码如下所示:
Sub test()
Dim cell As Range
For Each cell In Worksheets("Sheet1").Range("T5", "T900000")
If cell.Value = 1 Then
cell.EntireRow.Delete
End If
Next cell
End Sub
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但需要永远运行,我将不得不这样做很多次.有没有更好的方法来做到这一点,或者某种方式来优化我已经拥有的使其运行得更快的东西?
这不会像您想象的那样工作......当您在遍历它们时删除行时,最终会跳过行.示例:假设您的行在A列中的数字为1 ... 10.您查看第一行并决定删除它.现在你看第二行.它有3号!你从来没看过第2排!!
更好的方法是根据列T的标准过滤电子表格,复制它,将其粘贴到新工作表(带格式等).
您可以打开宏录制并手动执行此操作; 那么你将拥有确切的VBA代码.我相信会更快.
即使你不这样做,如果你想做一个for each你删除的地方,反转顺序(从最后开始,向后工作)