Excel VBA: Cum se filtrează cu mai multe criterii în matrice (7 moduri)

  • Imparte Asta
Hugh West

Dacă sunteți în căutarea unor modalități de a filtru cu matrice de criterii multiple în Excel VBA Filtrarea unui set mare de date pe baza mai multor criterii poate fi facilitată cu ajutorul aplicației VBA mai degrabă decât să utilizați funcția convențională a Excel.

Așadar, să începem articolul principal.

Descărcați caietul de lucru

Filtru cu criterii multiple.xlsm

7 moduri de a filtra cu criterii multiple în matrice folosind Excel VBA

În setul de date următor, avem câteva înregistrări de note corespunzătoare numelui studenților și ID-urilor acestora. Vom încerca să filtrăm acest set de date pe baza diferitelor criterii sub formă de matrice, utilizând câteva coduri.

Am folosit Microsoft Excel 365 aici, puteți utiliza orice altă versiune în funcție de confortul dumneavoastră.

Metoda-1: Filtru cu criterii multiple ca texte în matrice

Aici, vom încerca să filtrăm următorul set de date pe baza Numele elevului pentru criterii multiple care conțin șirurile de caractere Emily , Daniel , și Gabriel într-o matrice.

Etapa-01 :

➤ Mergeți la Dezvoltator Tab>> Visual Basic Opțiune.

Apoi, se va trece la Editor Visual Basic se va deschide.

➤ Mergeți la Introduceți Tab>> Modul Opțiune.

După aceea, un Modul vor fi create.

Etapa-02 :

➤ Scrieți următorul cod

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

Aici, am declarat numele antetului în intervalul B3:D3 în care vom aplica filtrul și Câmp:=2 este numărul de coloană al acestui interval pe baza căruia se va face acest proces de filtrare.

În cele din urmă, am setat criteriile ca o matrice pentru a declara mai multe nume de studenți, cum ar fi Emily , Daniel , și Gabriel .

➤ Presa F5 .

Apoi, veți avea setul de date filtrat pentru mai multe criterii pentru a afișa numele studenților și numele lor corespunzător. Ids și Marks pentru studenți Emily , Daniel , și Gabriel .

Citește mai mult: Filtrarea mai multor criterii în Excel (4 moduri adecvate)

Metoda-2: Filtru cu mai multe criterii numerice în matrice folosind Excel VBA

Aici, vom filtra următorul set de date pentru id-uri 101135 , 101137 , și 101138 prin utilizarea acestor numere ca și criterii multiple într-o matrice.

Pași :

➤ Urmăriți Etapa-01 de Metoda-1 .

➤ Scrieți următorul cod

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub 

Aici, am declarat numele antetului în intervalul B3:D3 în care vom aplica filtrul și Câmp:=2 este numărul de coloană al acestui interval pe baza căruia se va face acest proces de filtrare.

În cele din urmă, am setat criteriile ca o matrice pentru a declara id-urile mai multor studenți, cum ar fi 101135 , 101137 , și 101138 și le-am pus între ghilimele pentru a le specifica ca șiruri de caractere, deoarece AutoFilter va funcționa doar pentru un array de șiruri de caractere.

➤ Presa F5 .

După aceea, veți obține numele și notele studenților care au ID-uri. 101135 , 101137 , și 101138 .

Citește mai mult: VBA pentru a obține valori unice din coloană în matrice în Excel (3 criterii)

Metoda 3: Setarea mai multor criterii într-un interval pentru utilizarea ca matrice

Aici, am enumerat criteriile din Lista coloana care conține id-urile 101134 , 101135 , și 101136 pe baza cărora vom face procesul de filtrare.

Pași :

➤ Urmăriți Etapa-01 de Metoda-1 .

➤ Scrieți următorul cod

 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 

Aici, am declarat ID_range , k ca Varianta și ID_range este matricea care va stoca mai multe criterii, iar k este incrementul care variază de la limita inferioară la limita superioară a acestui tablou. Pentru a avea limita inferioară și limita superioară am folosit Funcția LBOUND și Funcția UBOUND respectiv.

The Bucla FOR este utilizat pentru a converti valorile din array, altele decât șiruri de caractere, în șiruri de caractere cu ajutorul funcției Funcția CStr În cele din urmă, am utilizat această matrice ca fiind Criterii1 .

➤ Presa F5 .

După aceea, veți obține numele și notele elevilor care au id-uri. 101134 , 101135 , și 101136 .

Citește mai mult: Filtrarea coloanei diferite prin criterii multiple în Excel VBA

Lecturi similare

  • Cum să filtrați valorile unice în Excel (8 moduri simple)
  • Efectuați un filtru personalizat în Excel (5 moduri)
  • Calculați media unui tablou cu VBA (Macro, UDF și UserForm)
  • Comenzi rapide pentru filtrul Excel (3 utilizări rapide cu exemple)

Metoda 4: Utilizarea funcțiilor SPLIT și JOIN pentru crearea unei matrice cu criterii multiple

Aici, vom utiliza următoarea listă în cadrul Lista ca o matrice, iar pentru a filtra corect setul de date vom folosi, de asemenea, coloana Funcția SPLIT , Funcția JOIN , și Funcția TRANSPOSE într-o VBA cod.

Pași :

➤ Urmăriți Etapa-01 de Metoda-1 .

➤ Scrieți următorul cod

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

Aici, TRANSPOSE va converti 2D într-o matrice 1D array altfel AutoFilter nu va funcționa, JOIN va uni fiecare dintre valori într-o matrice de șiruri de caractere, iar în final, SPLIT va descompune fiecare șir de caractere pentru a le introduce separat ca și criterii de filtrare a setului de date.

➤ Presa F5 .

În cele din urmă, veți obține numele și notele studenților care au id-uri. 101134 , 101135 , și 101136 .

Citește mai mult: Cum să împărțiți un șir de caractere într-o matrice în VBA (3 moduri)

Metoda-5: Filtrați cu criterii multiple într-o buclă pentru array cu VBA

În această secțiune, vom filtra următorul set de date în funcție de ID-ul studentului pentru mai multe criterii enumerate în coloana Lista coloană.

Pași :

➤ Urmăriți Etapa-01 de Metoda-1 .

➤ Scrieți următorul cod

 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 

Aici, am declarat k ca Număr întreg , ID_range(100) ca Șir de caractere unde ID_range este o matrice care va stoca până la 100 Pentru a determina valorile pentru acest tablou, am folosit aici valorile Bucla FOR pentru k de la 4 la 6 ca numere de rânduri ale fișierului Lista coloană și F este numele coloanei.

În cele din urmă, am folosit această matrice ca Criterii1 pentru AutoFilter .

➤ Presa F5 .

În cele din urmă, veți obține numele și notele elevilor care au id-uri. 101134 , 101135 , și 101136 .

Citește mai mult: Filtrarea criteriilor multiple în Excel cu VBA (ambele tipuri AND și OR)

Metoda 6: Utilizarea intervalului numit pentru criterii multiple

Aici, am enumerat câteva nume de elevi din Lista și am numit acest interval ca fiind Student Folosind acest interval numit, vom defini o matrice care va conține mai multe criterii pentru AutoFilter caracteristică.

Pași :

➤ Urmăriți Etapa-01 de Metoda-1 .

➤ Scrieți următorul cod

 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 

Aici, am declarat Student_range , k ca un Varianta , și a folosit Funcția TRANSPOSE pentru a converti 2D array al intervalului numit Student într-un 1D array și apoi a fost stocat în Student_range Apoi, se utilizează ca Criterii1 pentru AutoFilter metoda.

➤ Presa F5 .

Apoi, veți avea setul de date filtrat pentru mai multe criterii pentru a afișa numele studenților și numele lor corespunzător. Ids și Marks pentru studenți Jefferson , Emily , și Sara .

Conținut conex: VBA pentru a transpune matricea în Excel (3 metode)

Metoda-7: Filtrați tabelul cu criterii multiple într-o matrice

Aici, avem următoarele Tabelul al cărui nume este Tabelul1 și folosind Excel VBA vom încerca să filtrăm acest tabel pe baza numelor Emily , Daniel , și Gabriel ca și criterii multiple într-o matrice.

Pași :

➤ Urmăriți Etapa-01 de Metoda-1 .

➤ Scrieți următorul cod

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

Aici, ListObjects("Table1") este utilizat pentru definirea tabelului Tabelul1 , Câmp:=2 pentru stabilirea celei de-a doua coloane a acestui interval ca bază a procesului de filtrare și, în final, am definit un array care conține mai multe nume pentru Criterii1 .

➤ Presa F5 .

În cele din urmă, veți avea setul de date filtrat în funcție de mai multe criterii pentru a afișa numele elevilor și numele lor corespunzător. Ids și Marks pentru studenți Emily , Daniel , și Gabriel .

Citește mai mult: Excel VBA: Filtrați tabelul pe baza valorii celulei (6 metode ușoare)

Secțiunea practică

Pentru a face practică de unul singur am pus la dispoziție un Practică ca mai jos, într-o foaie numită Practică Vă rog să o faceți singur.

Concluzie

În acest articol, am încercat să acoperim modalitățile de filtrare cu mai multe criterii ca o matrice folosind Excel VBA Dacă aveți sugestii sau întrebări, nu ezitați să le împărtășiți în secțiunea de comentarii.

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.