我在下面录制了以下宏(简写)
Selection.AutoFilter
ActiveSheet.Range("$A$4:$FD$373").AutoFilter Field:=3, Criteria1:=Array( _
"house", "flat", _
"hotel"), Operator:=xlFilterValues我想要添加更多的字符串(总共130),但是我一直收到以下消息
“行数过多”
该列大约有4-6千行数据,最初我想删除具有特定字符串值的行,但是这种方法需要很长时间才能处理。
我到处都找遍了,似乎不能把头绕着它走。
有什么想法吗?非常感谢
发布于 2014-10-26 16:43:04
不要将标准存储在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发布于 2014-10-26 16:58:17
这里有一种可能性
让一个标签名为FindReplace,在A列中将你的130个字符串放置在B列中#(在130个单元格旁边的130个字符串中)
将"MyTab“更改为带有6000行的选项卡的名称。
将.Columns("C:C")更改为正确的列
运行宏,这将将与6000行中的130字符串匹配的所有字符串更改为#
然后使用宏on #删除所有不需要的行
'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 Subhttps://stackoverflow.com/questions/26574716
复制相似问题