【发布时间】:2017-08-23 22:54:23
【问题描述】:
我们有一张用于分析详细招标过程的工作表,并希望删除所有空行。
范围可能因项目而异,最多可能有 170 列和 6000 行。
我测试过的代码在一个大约有 . 40 列和 4750 行,运行只需不到 10 分钟。
寻找任何稍微更优雅的解决方案来缩短这个时间。目前代码会自动过滤每一列的空白,想知道是否即使是被过滤的空列也会减慢整个过程?
在下面的代码中,为了便于查看,我删除了大部分自动过滤字段,但它过滤了 1-175 之间的每个字段。
Sub DeleteEmptyRows()
With Sheets("Detailed Comparison")
Application.DisplayAlerts = False
.AutoFilterMode = False
Application.ScreenUpdating = False
With .Range("F24:FY6000")
.AutoFilter
.AutoFilter Field:=1, Criteria1:="="
.AutoFilter Field:=2, Criteria1:="="
.AutoFilter Field:=175, Criteria1:="="
End With
With .Range("F25:FY6000").SpecialCells(xlCellTypeVisible).Rows.Delete
End With
Application.DisplayAlerts = True
.AutoFilterMode = False
Application.ScreenUpdating = True
End With
End Sub
【问题讨论】:
-
我知道您需要优化您的代码或类似的东西;我想你应该试试CodeReview ||我不明白你为什么使用空的 With 块 (
.Range("F25:FY6000").SpecialCells(xlCellTypeVisible).Rows.Delete)
标签: excel vba rows autofilter