Excel VBA Range.AutoFilter等号筛选(“=”)
我有一个表Excel VBA Range.AutoFilter等号筛选(“=”),vba,excel,autofilter,Vba,Excel,Autofilter,我有一个表tbl\u recommendations,在第13列中包含以下值:-,-,=,+,++ 现在,我想筛选=,+,++。手动操作效果很好,但是,在使用VBA对=进行过滤时,我遇到了一些问题。只需使用宏记录器,它就会给出以下代码: Sub Test() ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _ Criteria1:=Array("+", "++", " = "), Op
tbl\u recommendations
,在第13列中包含以下值:-
,-
,=
,+
,++
现在,我想筛选=
,+
,++
。手动操作效果很好,但是,在使用VBA对=
进行过滤时,我遇到了一些问题。只需使用宏记录器,它就会给出以下代码:
Sub Test()
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", " = "), Operator:=xlFilterValues
End Sub
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", "="), Operator:=xlFilterValues
执行此宏时,它只过滤
+
和+
,而不过滤=
。诀窍是什么?这是基于在进行过滤时录制宏,并且似乎有效:
Sub Test()
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", "="), Operator:=xlFilterValues
End Sub
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("=+", "=++", "=="), Operator:=xlFilterValues
这很奇怪,但是如果您运行宏记录器来筛选“+”、“+”和“=”(带空格)条件,那么:
- 它编写以下代码:
Sub Test() ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _ Criteria1:=Array("+", "++", " = "), Operator:=xlFilterValues End Sub
因此,它删除“=”字符前后的“空格”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
与ActiveSheet.ListObjects(“tbl_建议”).Range
.columns(13)。替换内容:=“=”,替换:=“|=|”,查看:=xlother'我试图在每个字符前添加一个额外的等号,似乎有效:
Sub Test()
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("+", "++", "="), Operator:=xlFilterValues
End Sub
ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _
Criteria1:=Array("=+", "=++", "=="), Operator:=xlFilterValues
您是否尝试过在=
后面不加空格?似乎使用“=”
可以保存过滤器,以便只显示指定字段的空格,方法是使用:标准1:=“=”
,阅读这里@ShaiRado您是对的。但是,我希望一定存在这种可能性,因为我可以手动筛选=
。@Veve…删除周围的空格并不重要。没有版本正在运行…我无法确认您的解决方案是否正常运行。它不显示行值=
。如果“=”
没有空格,它就可以工作,但是当输入“=”
时,IDE看起来有点像雪花,因为它有时会莫名其妙地输入等号前后的空格。尝试删除您的测试子项,启动一个新的Test2子项,并将上述命令复制/粘贴到其中。@Andi,您完成了吗?