2015-10-01 212 views
0

我試圖使用我的宏來篩選我的數據,我想允許除了三個條件以外的所有內容。我的代碼符合兩個標準,但不允許我添加第三個標準,出於某種原因,我不能使用Criteria1:= Array函數。我的代碼是:超過兩個條件的自動篩選器例外

wsO.Range("A1").AutoFilter Field:=36, Criteria1:="<>Accept as Medicare product", Criteria2:="<>Accept as NJ Medicaid product", Criteria3:="<>Accept as Medicaid product", Operator:=xlFilterValues 

它返回一個名稱參數沒有找到(因爲我相信你只能加2個標準,這種方式)

我也有嘗試:

wsO.Range("A1").AutoFilter Field:=36, Criteria1:=Array(_ 
"<>Accept as Medicare product", "<>Accept as NJ Medicaid product", "<>Accept as Medicaid product"), Operator:=xlFilterValues 

哪返回錯誤信息:運行時錯誤'1004':應用程序定義或對象定義的錯誤。

+0

我相信過濾器中的數組只適用於多個匹配,而不是一組「<>」。您可以通過幫助列逃脫 – Raugmor

+0

兩個標準是例外的最大值。自動過濾器沒有辦法解決這個問題,除了讓你的代碼遍歷你的列表併爲所有ALLOWED值創建標準之外。 –

+0

你可以使用這樣的方法:http://stackoverflow.com/questions/32882661/excel-vba-autofilter-contains-with-multiple-criteria/32882806?noredirect=1#comment53597232_32882806或使用高級過濾器,或者配方助手列。 – Rory

回答

0

您可以遍歷範圍並隱藏行。

Sub OhYa() 
    Dim rws As Long 
    Dim rng As Range 
    Dim f As Range 
    Dim a As String, b As String, c As String 

    a = "Accept as Medicare product" 
    b = "Accept as NJ Medicaid product" 
    c = "Accept as Medicaid product" 

    rws = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rng = Range("A2:A" & rws) 
    Application.ScreenUpdating = 0 

    For Each f In rng.Cells 
     If f <> a And f <> b And f <> c Then 
      f.EntireRow.Hidden = 1 
     End If 
    Next f 


End Sub