Utilizzando la matrice di stringhe come criteri in VBA filtro automatico

Ho cercato altri post e trovato problemi simili ma nulla che mi potesse aiutare in modo specifico. Sto cercando di prendere un array di stringhe e utilizzare come criteri di filtro. E ‘ difficile perché l’array viene creato da una funzione e ha un numero variabile di elementi e contenuti. Ho bisogno di un filtro automatico per prendere e controllare colonna E per ciascuno dei suoi elementi.

Ho provato in due modi

1)

With Sheet17

 .Range("E1").AutoFilter Field:=5, Criteria1:=Application.Transpose(arr)

End With

Risultato: si Applica un filtro a colonna E, ma non riesce a selezionare una qualsiasi delle opzioni di

2)

For i = 0 To counter - 1

  With Sheet17

    .Range("E1").AutoFilter Field:=5, Criteria1:=Application.Transpose(arr(i))
End With

Next

Nota: il Contatore è un intero che rappresenta il numero di elementi nell’array
Risultato: Questo correttamente scorre l’array, ma solo seleziona l’ultima opzione filtro – presumibilmente perché ogni volta che si loop indietro attraverso di essa ricomincia e si deseleziona ogni altra opzione di modo che, alla fine, solo l’ultima opzione rimane selezionata.

OriginaleL’autore slzar | 2016-07-15

2 Replies
  1. 10

    Non è necessario recepire un singolo elemento di un array e non è possibile inserire i criteri in 5th campo se si è solo in riferimento a colonna E.

    Dim i As Long, arr As Variant
    arr = Array(1, 3)
    
    With Sheet17
        'to filter each value in the array one at a time
        For i = 0 To UBound(arr)
            .Columns("E").AutoFilter Field:=1, Criteria1:=arr(i)
        Next i
    
        'my values were numbers - AutoFilter likes strings in its array
        For i = LBound(arr) To UBound(arr)
            arr(i) = CStr(arr(i))
        Next i
    
        'to filter all values in the array at once specify xlFilterValues
        .Columns("E").AutoFilter Field:=1, Criteria1:=arr, _
                                 Operator:=xlFilterValues
    End With

    Specificare il Operator:=xlFilterValues quando il passaggio di un array e il La gamma.Filtro Automatico Metodo piace stringhe come i valori in un array.

    OriginaleL’autore

  2. 6

    La documentazione di Excel per Filtro automatico fornisce alcune indicazioni. Il Operator parametro ha un XlAutoFilterOperator che specifica come Criteria1 viene interpretato. Nel tuo caso, la definizione di un valore di xlFilterValues causa Criteria1 per essere correttamente interpretato come un array di valori di filtro.

    Esempio riportato di seguito viene illustrato questo:

    Dim arr As Variant
    arr = Array("Alpha", "Bravo", "Charlie")
    
    Sheet17.Range("E1").AutoFilter _
        Field:=5, _
        Criteria1:=arr, _
        Operator:=xlFilterValues

    OriginaleL’autore Brett Wolfington

Lascia un commento