我有一个表tbl_recommendations
,其中包含第13列中的以下值:--
,-
,=
,+
,++
现在,我想过滤=
,+
,++
。这可以手动正常工作,但是,在使用VBA进行=
过滤时,我遇到了一些问题。只需使用宏录制器,它就会给我以下代码:
Sub Test()
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", " = "), Operator:=xlFilterValues
End Sub
执行此宏时,它仅过滤+
和++
,但不过滤=
。有什么诀窍?
答案 0 :(得分:0)
这是基于在进行过滤时录制宏并且似乎有效:
Sub Test()
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", "="), Operator:=xlFilterValues
End Sub
答案 1 :(得分:0)
这很奇怪但是如果你运行宏录制器来过滤“+”,“++”和“=”(带空格)标准,那么:
它写下面的代码:
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", "="), Operator:=xlFilterValues
所以它删除了“=”字符
它正确过滤了表格,其中显示了表格第13列中带有“+”,“++”和“=”(带空格)内容的记录
但如果您运行该宏,则不再过滤“=”(带空格)记录!
假设必须有一些巫术涉及过滤器和“=”字符,你可以用这个小解决方法来阻止它:
With ActiveSheet.ListObjects("tbl_recommendations").Range
.columns(13).Replace what:=" = ", Replacement:="|=|", lookat:=xlWhole '<--| substitute "forbidden" " = " criteria with a "valid" one
.AutoFilter Field:=13, Criteria1:=Array("+", "++", "|=|"), Operator:=xlFilterValues '<--| filter with "valid" criteria
' your code to act on filtered cells
'....
.columns(13).Replace what:="|=|", Replacement:=" = ", lookat:=xlWhole '<--| finally bring " = " back in place!
End With
答案 2 :(得分:0)
我试图在每个字符前添加一个附加的等号,这似乎可行:
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("=+", "=++", "=="), Operator:=xlFilterValues