2017-03-03 194 views
0

我哈瓦包含在列13中的下列值的表tbl_recommendations( “=”):---=+++Excel的VBA Range.AutoFilter滤波等号

现在,我想过滤为=,+,++。这是手动工作,但是,我在使用VBA过滤=时遇到一些问题。只需用宏录制,它给了我下面的代码:

Sub Test() 

ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _ 
    Criteria1:=Array("+", "++", " = "), Operator:=xlFilterValues 

End Sub 

当执行这个宏,它只能用于过滤和+++,但不是=。有什么诀窍?

+0

你有没有试过不带空格sourrounding了'='? – Veve

+0

似乎使用'“=”'为过滤器保存,以便通过使用:'Criteria1:=“=”'显示指定字段的空白,请阅读http://www.ozgrid.com/VBA/autofilter -vba-criteria.htm –

+0

@ShaiRado你是对的。但是,我期望有一种可能性,因为我可以手动过滤'='。 – Andi

回答

0

这是基于录制宏,而这样做的过滤和似乎工作:

Sub Test() 

ActiveSheet.ListObjects("tbl_recommendations").Range.AutoFilter Field:=13, _ 
    Criteria1:=Array("+", "++", "="), Operator:=xlFilterValues 

End Sub 
+0

...我无法确认您的解决方案是否正常工作。它没有显示行值'='。 – Andi

+0

如果'“=”'没有空格,但输入'“=”时IDE看起来有点不雅,因为它有时会在等号之前和之后莫名其妙地进入空格。尝试删除您的Test子项,启动一个新的Test2子项并将上面的命令复制/粘贴到其中。 –

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 
+0

@安迪,你通过了吗? – user3598756