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中
将单元格ZZ1到ZZ130中的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