我在下面录制了以下宏(短版)
Selection.AutoFilter
ActiveSheet.Range("$A$4:$FD$373").AutoFilter Field:=3, Criteria1:=Array( _
"house", "flat", _
"hotel"), Operator:=xlFilterValues
我想添加更多字符串(总共130个),但我不断收到以下消息
''太多续行''
该列有大约4-6,000行数据,最初我想删除具有某些字符串值的行,但这种方法需要很长时间才能处理。
我到处寻找,似乎无法理解它:(
有什么想法吗?非常感谢
答案 0 :(得分:1)
请勿将标准存储在 VBA
中将130个值放在 ZZ1 到 ZZ130
的单元格中然后:
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
答案 1 :(得分:0)
这是一种可能性
将一个标签称为FindReplace,在A列中将130个字符串放在B列的位置#(在130个字符串旁边的130个单元格中)
改变" MyTab"到带有6000行的选项卡的名称
将.Columns("C:C")
更改为正确的列
运行宏,这会将匹配6000行中130个字符串的所有字符串更改为#
然后在#上使用宏删除所有不需要的行
'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