Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel ActiveSheet。范围自动筛选RGB速度较慢_Excel_Vba_Filtering - Fatal编程技术网

Excel ActiveSheet。范围自动筛选RGB速度较慢

Excel ActiveSheet。范围自动筛选RGB速度较慢,excel,vba,filtering,Excel,Vba,Filtering,我在Excel VBA中有一个宏,其中的一个步骤是对ActiveSheet范围执行自动筛选,即基于颜色的筛选。这一步似乎相当耗时,我想知道是否有更快的方法来过滤我的数据?对颜色的过滤通常较慢吗?下面是我正在使用的代码示例: Selection.AutoFilter ActiveSheet.Range("$A$1:$AB$100000").AutoFilter Field:=1, Criteria1:=RGB(255 _ , 199, 206), Operator:=xlFilterCel

我在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

你能试试这个吗。定义最后一行数据,不要选择。我不确定这是否会带来巨大的变化,但看看会发生什么

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

您不需要选择

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

“相当耗时”是什么意思?你真的需要去第100k排吗?@SJR,不,你说得对。我最初并不是写这段代码的。我认为作者试图确保他们捕获了宏中的所有记录。我运行的数据集大约有32K行