2017-03-03 126 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