VBA批量行删除如何效率化

来源:百度知道 编辑:UC知道 时间:2024/06/02 21:35:17
各位VBA达人,这里请教了。。 先看一下代码
For i = 706 To 581 Step -1
If Trim(oSheet.Range("F" & i).Value) = "" Then
oSheet.Rows(i).Delete Shift:=xlUp
End If
Next i

For i = 576 To 129 Step -1
If Trim(oSheet.Range("F" & i).Value) = "" Then
oSheet.Rows(i).Delete Shift:=xlUp
End If
Next i

其实操作上很简单,就是从后往前查找,如果是空,就删除这一行,因为模板的问题,我想不到什么更为便利的方法了,不能使用数组取值删除后重新赋值的方法,如果没有以上的操作,我全部的功能执行时间大概在 10 秒左右,可是加上了上面的代码之后,性能好点的机器也要3-4分钟。。实在是太慢了。。 而且我已经设置了 禁止刷屏,禁止自动计算,谁能帮忙看看,这到底是怎么回事,有没有什么优化的方法可以实现快速行删除操作的。。

因为不了解你的具体情况,提个思路,将你需删的行清空,然后筛选非空行复制到新工作表中(最好按你的旧表的格式先格式化),如果这个方法适用的话会比你的方法快,VBA中如果表格中有很多公式,删除单元格是很费时的.

用For循环肯定很慢的,可以先替换再用SpecialCells全部定位删除试试看,Specialcells是全部定位,效率很高,如果还不行只能用ADO再试试。
你可以参考下 这篇文章,如果不明白可以再讨论

http://club.excelhome.net/thread-490908-1-1.html

网络问题不能登录账号