【发布时间】:2015-10-30 14:24:51
【问题描述】:
我使用以下代码作为解决方法,而不是过滤数据,因为我有多个条件。我在某处读到一次只能过滤 2 个条件?
问题是我有 5 个 - AB, DZ, RE, Z3, ZP - 应该删除其他所有内容。所以我使用下面的代码,它工作正常,但每次运行宏都必须处理 +30000 行,它非常慢。
无论如何你可以更快地做到这一点吗?我正在考虑一次过滤每个标准(创建以下第一个代码中的 5 个)。但如果有任何方法可以更快地完成,我将不胜感激。
我使用的代码很慢:
' Step 13 - Filter and Delete All Except
' AB, DZ, RE, Z3, ZP in Column 6 - Type
Sub FilterDeleteType()
Dim rTable As Range, r As Range
Dim rDelete As Range
Set rDelete = Nothing
Dim v As Variant
Worksheets("Overdue Items").Activate
For Each r In Columns(6).Cells
v = r.Value
If v <> "Type" And v <> "AB" And v <> "DZ" And v <> "RE" And v <> "Z3" And v <> "ZP" Then
If rDelete Is Nothing Then
Set rDelete = r
Else
Set rDelete = Union(r, rDelete)
End If
End If
Next
If Not rDelete Is Nothing Then rDelete.EntireRow.Delete
End Sub
【问题讨论】:
-
照常做,包括:
Application.EnableEvents = False和Application.ScreenUpdating = False和Application.Calculation = xlCalculationManual在代码的开头并在最后恢复。 -
谢谢@Ralph,但是我看不出速度有什么不同:-(
标签: excel for-loop filter autofilter vba