我在Excel VBA中有一个宏,其中的步骤之一是对ActiveSheet范围执行自动筛选,并根据颜色进行筛选。此步骤似乎很耗时,我想知道是否有更快的方法来过滤数据?通常对颜色进行过滤会较慢吗?这是我正在使用的代码示例:
Selection.AutoFilter
ActiveSheet.Range("$A$1:$AB$100000").AutoFilter Field:=1, Criteria1:=RGB(255 _
, 199, 206), Operator:=xlFilterCellColor
Rows("2:100000").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
答案 0 :(得分:0)
可以尝试一下吗?定义数据的最后一行,而不选择。我不确定这会带来很大的不同,但请看它的进展。
Sub Macro1()
Dim r As Long
r = Range("A" & Rows.Count).End(xlUp).Row
With ActiveSheet.Range("$A$1:$AB$" & r)
.AutoFilter Field:=1, Criteria1:=RGB(255, 199, 206), Operator:=xlFilterCellColor
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete shift:=xlUp
End With
ActiveSheet.AutoFilterMode = False
End Sub
答案 1 :(得分:0)
您不需要选择。
Sub DoIt()
Dim rng As Range
Set rng = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
rng.AutoFilter Field:=1, Criteria1:=RGB(255, 199, 206), Operator:=xlFilterCellColor
rng.Offset(1).EntireRow.Delete
ActiveSheet.AutoFilterMode = 0
End Sub