Excel VBA: come filtrare con più criteri in una matrice (7 modi)

  • Condividi Questo
Hugh West

Se siete alla ricerca di modi per filtro con array di criteri multipli in Excel VBA Filtrare un grande insieme di dati in base a più criteri può essere reso più semplice con l'aiuto di VBA piuttosto che utilizzare la funzione convenzionale di Excel.

Quindi, iniziamo il nostro articolo principale.

Scarica il libro di lavoro

Filtro con criteri multipli.xlsm

7 modi per filtrare con più criteri in una matrice usando Excel VBA

Nel seguente set di dati, abbiamo alcuni record di voti corrispondenti al nome degli studenti e ai loro id. Cercheremo di filtrare questo set di dati in base a diversi criteri come array utilizzando alcuni codici.

Abbiamo utilizzato Microsoft Excel 365 è possibile utilizzare qualsiasi altra versione in base alle proprie esigenze.

Metodo-1: Filtro con più criteri come testi in una matrice

In questa sede, cercheremo di filtrare il seguente set di dati in base alla Nome dello studente per criteri multipli contenenti le stringhe Emily , Daniele , e Gabriele in un array.

Passo-01 :

➤ Andare alla pagina Sviluppatore Scheda Visual Basic Opzione.

Poi, il Editor Visual Basic si aprirà.

➤ Andare alla pagina Inserire Scheda Modulo Opzione.

Successivamente, un Modulo verrà creato.

Passo-02 :

➤ Scrivere il seguente codice

 Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Qui, abbiamo dichiarato i nomi delle intestazioni nell'intervallo B3:D3 in cui applicheremo il filtro e Campo:=2 è il numero di colonna dell'intervallo in base al quale verrà eseguito il processo di filtraggio.

Infine, abbiamo impostato i criteri come array per dichiarare i nomi di più studenti, come ad esempio Emily , Daniele , e Gabriele .

➤ Stampa F5 .

Poi, si avrà il set di dati filtrato per più criteri per mostrare il nome degli studenti e il loro corrispondente Ids e Marchi per gli studenti Emily , Daniele , e Gabriele .

Per saperne di più: Filtrare più criteri in Excel (4 modi adatti)

Metodo-2: Filtro con criteri numerici multipli in una matrice utilizzando Excel VBA

In questo caso, filtreremo il seguente set di dati per gli id 101135 , 101137 , e 101138 utilizzando questi numeri come criteri multipli in una matrice.

Passi :

➤ Segui Passo-01 di Metodo-1 .

➤ Scrivere il seguente codice

 Sub filtro_con_array_come_criteri_2() ActiveSheet.Range("B3:D3").AutoFilter Campo:=1, Operatore:=xlFilterValues, _ Criteri1:=Array("101135", "101137", "101138") Fine Sub 

Qui, abbiamo dichiarato i nomi delle intestazioni nell'intervallo B3:D3 in cui applicheremo il filtro e Campo:=2 è il numero di colonna dell'intervallo in base al quale verrà eseguito il processo di filtraggio.

Infine, abbiamo impostato i criteri come array per dichiarare gli id di più studenti, come ad esempio 101135 , 101137 , e 101138 e li abbiamo messi all'interno di virgolette per specificarli come stringhe perché Filtro automatico funzionerà solo per un array di stringhe.

➤ Stampa F5 .

In seguito, si otterranno i nomi e i voti degli studenti che hanno un id. 101135 , 101137 , e 101138 .

Per saperne di più: VBA per ottenere valori unici da una colonna in una matrice in Excel (3 criteri)

Metodo 3: Impostazione di più criteri in un intervallo per l'utilizzo come array

Qui abbiamo elencato i criteri nella Elenco colonna contenente gli id 101134 , 101135 , e 101136 in base al quale eseguiremo il processo di filtraggio.

Passi :

➤ Segui Passo-01 di Metodo-1 .

➤ Scrivere il seguente codice

 Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Qui abbiamo dichiarato ID_range , k come Variante e ID_range è l'array che memorizza più criteri e k è l'incremento che va dal limite inferiore al limite superiore di questa matrice. Per avere il limite inferiore e il limite superiore abbiamo usato il metodo Funzione LBOUND e Funzione UBOUND rispettivamente.

Il Ciclo FOR viene utilizzato per convertire i valori diversi dalle stringhe nell'array in stringhe con l'aiuto del metodo Funzione CStr Infine, abbiamo utilizzato questa matrice come Criteri1 .

➤ Stampa F5 .

In seguito, si otterranno i nomi e i voti degli studenti con id 101134 , 101135 , e 101136 .

Per saperne di più: Filtrare colonne diverse in base a più criteri in Excel VBA

Letture simili

  • Come filtrare i valori unici in Excel (8 modi semplici)
  • Eseguire un filtro personalizzato in Excel (5 modi)
  • Calcolo della media di un array con VBA (Macro, UDF e UserForm)
  • Scorciatoia per il filtro di Excel (3 usi rapidi con esempi)

Metodo 4: utilizzo delle funzioni SPLIT e JOIN per la creazione di array con più criteri

In questo caso, si utilizzerà il seguente elenco nel file Elenco come array e per filtrare correttamente il set di dati utilizzeremo anche la colonna Funzione SPLIT , Funzione JOIN , e Funzione TRANSPOSE in un VBA codice.

Passi :

➤ Segui Passo-01 di Metodo-1 .

➤ Scrivere il seguente codice

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub 

Qui, TRASPARENZA convertirà il file 2D in un array 1D array altrimenti Filtro automatico non funzionerà, CONGIUNGERE unirà tutti i valori in un array di stringhe e infine, SPLIT scomporrà ogni stringa per darla in input separatamente come criterio per filtrare il set di dati.

➤ Stampa F5 .

Infine, si otterranno i nomi e i voti degli studenti con id 101134 , 101135 , e 101136 .

Per saperne di più: Come dividere una stringa in una matrice in VBA (3 modi)

Metodo-5: Filtro con criteri multipli in un ciclo per array con VBA

In questa sezione, filtreremo il seguente set di dati in base alle caratteristiche di Id studente per i criteri multipli elencati nella colonna Elenco colonna.

Passi :

➤ Segui Passo-01 di Metodo-1 .

➤ Scrivere il seguente codice

 Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Qui abbiamo dichiarato k come Intero , ID_range(100) come Stringa dove ID_range è un array che memorizza fino a 100 Per determinare i valori di questa matrice abbiamo utilizzato il metodo Ciclo FOR per k da 4 a 6 come numeri di riga del file Elenco colonna e F è il nome della colonna.

Infine, abbiamo usato questo array come Criteri1 per Filtro automatico .

➤ Stampa F5 .

Alla fine si otterranno i nomi e i voti degli studenti che hanno un id. 101134 , 101135 , e 101136 .

Per saperne di più: Filtrare più criteri in Excel con VBA (entrambi i tipi AND e OR)

Metodo 6: Utilizzo di un intervallo di nomi per criteri multipli

Qui di seguito abbiamo elencato alcuni nomi di studenti della Elenco e denominare questo intervallo come Studente Utilizzando questo intervallo di nomi, si definirà un array che conterrà più criteri per la ricerca di un'immagine. Filtro automatico caratteristica.

Passi :

➤ Segui Passo-01 di Metodo-1 .

➤ Scrivere il seguente codice

 Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub 

Qui abbiamo dichiarato Gamma_studenti , k come un Variante e ha utilizzato il Funzione TRANSPOSE per convertire il 2D dell'intervallo denominato Studente in un 1D e poi memorizzarlo in Gamma_studenti Quindi, viene utilizzato come Criteri1 per il Filtro automatico metodo.

➤ Stampa F5 .

Poi, si avrà il set di dati filtrato per più criteri per mostrare il nome degli studenti e il loro corrispondente Ids e Marchi per gli studenti Jefferson , Emily , e Sara .

Contenuti correlati: VBA per trasporre una matrice in Excel (3 metodi)

Metodo 7: Filtrare la tabella con più criteri in un array

Qui abbiamo quanto segue Tabella il cui nome è Tabella1 e utilizzando Excel VBA cercheremo di filtrare questa tabella in base ai nomi Emily , Daniele , e Gabriele come criteri multipli in un array.

Passi :

➤ Segui Passo-01 di Metodo-1 .

➤ Scrivere il seguente codice

 Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Qui, Oggetti elenco("Tabella1") è utilizzato per definire la tabella Tabella1 , Campo:=2 per impostare la seconda colonna di questo intervallo come base del processo di filtraggio e infine abbiamo definito un array contenente nomi multipli per Criteri1 .

➤ Stampa F5 .

Alla fine, si avrà il set di dati filtrato per più criteri per mostrare il nome degli studenti e il loro corrispondente Ids e Marchi per gli studenti Emily , Daniele , e Gabriele .

Per saperne di più: Excel VBA: filtrare la tabella in base al valore della cella (6 metodi semplici)

Sezione pratica

Per fare pratica da soli, abbiamo messo a disposizione un Pratica come di seguito in un foglio chiamato Pratica . per favore, fatelo da soli.

Conclusione

In questo articolo abbiamo cercato di illustrare i modi per filtrare con criteri multipli come array utilizzando Excel. VBA Se avete suggerimenti o domande, non esitate a condividerli nella sezione dei commenti.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.