VBA AutoFilter – 多个数组filter

我logging下面的macros(短版)

Selection.AutoFilter ActiveSheet.Range("$A$4:$FD$373").AutoFilter Field:=3, Criteria1:=Array( _ "house", "flat", _ "hotel"), Operator:=xlFilterValues 

我想添加更多的string(总共130),但我不断收到以下消息

“太多线路延续”

该列有大约4-6000行数据,最初我想删除具有特定string值的行,但是这种处理需要相当长的时间。

我看到处处都看不到我的头在它:(

有任何想法吗? 非常感激

不要将标准存储在VBA中

将单元格ZZ1ZZ130中的130个值

接着:

 Sub marine() Dim ary(0 To 129) As Variant For i = 1 To 130 ary(i - 1) = Range("ZZ" & i) Next i ActiveSheet.Range("$A$4:$FD$373").AutoFilter Field:=3, Criteria1:=ary, Operator:=xlFilterValues End Sub 

这是一种可能性

使一个标签叫做FindReplace,在列A中放置你的130个string在B列中(在130个string旁边的130个单元格中)

将“MyTab”更改为具有6000行的选项卡的名称

.Columns("C:C")更改为适当的列

运行这个macros将把所有匹配6000行的130个string的string改为#

然后在#上使用macros来删除所有不需要的行

 'MAKE A SHEET WITH 1ST COL = FIND 2ND COL = REPLACE Sub FindReplace() Dim FindValues As Variant Dim ReplaceValues As Variant Dim wsFR As Excel.Worksheet Dim wsTarget As Excel.Worksheet Dim lRow As Long Dim i As Long Sheets("FindReplace").Select Set wsFR = ThisWorkbook.Worksheets("FindReplace") Set wsTarget = ThisWorkbook.Worksheets("MyTab") lRow = wsFR.Range("A" & wsFR.Rows.Count).End(xlUp).Row With wsTarget FindValues = wsFR.Range("A2:A" & lRow).Value ReplaceValues = wsFR.Range("B2:B" & lRow).Value For i = LBound(FindValues) To UBound(FindValues) .Columns("C:C").Replace FindValues(i, 1), ReplaceValues(i, 1), xlWhole, xlByColumns, False Next i End With End Sub