Inhoudsopgave
Als u manieren zoekt om filter met meerdere criteria in Excel VBA Dan bent u op de juiste plaats. Het filteren van een grote dataset op basis van meerdere criteria kan gemakkelijker worden gemaakt met behulp van VBA codes in plaats van de conventionele functie van Excel te gebruiken.
Dus, laten we beginnen met ons hoofdartikel.
Werkboek downloaden
Filter met meerdere criteria.xlsm7 Manieren om te filteren met meerdere criteria in een matrix met Excel VBA
In de volgende dataset hebben we enkele records van cijfers die overeenkomen met de naam van de studenten en hun id's. We zullen proberen deze dataset te filteren op basis van verschillende criteria als een array met behulp van enkele codes.
Wij hebben gebruik gemaakt van Microsoft Excel 365 versie hier, u kunt elke andere versie gebruiken volgens uw gemak.
Methode-1: Filter met meerdere criteria als teksten in een matrix
Hier zullen we proberen de volgende dataset te filteren op basis van de Naam student kolom voor meerdere criteria die de strings bevatten Emily , Daniel en Gabriel in een matrix.
Step-01 :
Ga naar de Ontwikkelaar Tab>> Visual Basic Optie.
Dan, de Visual Basic-editor gaat open.
Ga naar de Plaats Tab>> Module Optie.
Daarna, een Module zal worden gecreëerd.
Step-02 :
➤ Schrijf de volgende code
Sub filter_met_array_als_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Veld:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") Einde Sub
Hier hebben we de kopnamen gedeclareerd in het bereik B3:D3 waarin we het filter zullen toepassen en Veld:=2 is het kolomnummer van dit bereik op basis waarvan wij dit filterproces zullen uitvoeren.
Ten slotte hebben we de criteria ingesteld als een array voor het aangeven van meerdere namen van leerlingen, zoals Emily , Daniel en Gabriel .
Druk F5 .
Vervolgens laat u de dataset filteren op meerdere criteria om de naam van de studenten en hun overeenkomstige Ids en Marks voor de studenten Emily , Daniel en Gabriel .
Lees meer: Meerdere criteria filteren in Excel (4 geschikte manieren)
Methode-2: Filteren met meerdere getalscriteria in een matrix met Excel VBA
Hier zullen we de volgende dataset filteren op de ids 101135 , 101137 en 101138 door deze getallen te gebruiken als meerdere criteria in een matrix.
Stappen :
Volg Step-01 van Methode-1 .
➤ Schrijf de volgende code
Sub filter_met_array_als_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Veld:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") Einde Sub
Hier hebben we de kopnamen gedeclareerd in het bereik B3:D3 waarin we het filter zullen toepassen en Veld:=2 is het kolomnummer van dit bereik op basis waarvan wij dit filterproces zullen uitvoeren.
Ten slotte hebben we de criteria ingesteld als een array voor het declareren van de ids van meerdere studenten, zoals 101135 , 101137 en 101138 en we hebben ze tussen aanhalingstekens gezet om ze als strings te specificeren omdat AutoFilter werkt alleen voor een array van strings.
Druk F5 .
Daarna krijgt u de namen en cijfers van de studenten met een id. 101135 , 101137 en 101138 .
Lees meer: VBA om unieke waarden uit een kolom in een matrix in Excel te krijgen (3 criteria)
Methode-3: Meerdere criteria in een bereik instellen voor gebruik als matrix
Hier hebben wij de criteria opgesomd in de Lijst kolom met de ids 101134 , 101135 en 101136 op basis waarvan wij ons filterproces zullen uitvoeren.
Stappen :
Volg Step-01 van Methode-1 .
➤ Schrijf de volgende code
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
Hier hebben we verklaard ID_bereik , k als Variant en ID_bereik is de matrix die meerdere criteria zal opslaan, en k is de toename van de ondergrens tot de bovengrens van deze matrix. Om de ondergrens en bovengrens te hebben hebben we de LBOUND functie en UBOUND functie respectievelijk.
De FOR-lus wordt gebruikt om andere waarden dan strings in de array om te zetten in strings met behulp van de CStr functie Tenslotte hebben wij deze matrix gebruikt als Criteria1 .
Druk F5 .
Daarna krijgt u de namen en cijfers van de leerlingen met een id. 101134 , 101135 en 101136 .
Lees meer: Verschillende kolommen filteren op meerdere criteria in Excel VBA
Vergelijkbare lezingen
- Hoe unieke waarden te filteren in Excel (8 eenvoudige manieren)
- Aangepaste filter uitvoeren in Excel (5 manieren)
- Het gemiddelde van een matrix berekenen met VBA (macro, UDF en UserForm)
- Sneltoets voor Excel Filter (3 snelle toepassingen met voorbeelden)
Methode-4: De functies SPLIT en JOIN gebruiken voor het maken van een array met meerdere criteria
Hier gebruiken we de volgende lijst in de Lijst kolom als een array en om de dataset goed te filteren zullen we ook de SPLIT-functie , JOIN-functie en TRANSPOSE functie in een VBA code.
Stappen :
Volg Step-01 van Methode-1 .
➤ Schrijf de volgende code
Sub filter_met_array_als_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Veld:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub
Hier, TRANSPOSE zal de 2D matrix in een 1D anders AutoFilter zal niet werken, JOIN zal elk van de waarden samenvoegen tot een array van strings, en tenslotte, SPLIT zal elke tekenreeks opsplitsen om ze afzonderlijk in te voeren als criteria voor het filteren van de dataset.
Druk F5 .
Tenslotte krijgt u de namen en cijfers van de leerlingen met een id. 101134 , 101135 en 101136 .
Lees meer: Een string in een array splitsen in VBA (3 manieren)
Methode-5: Filteren met meerdere criteria in een lus voor array met VBA
In dit deel zullen we de volgende dataset filteren op basis van de Student Id kolom voor meerdere criteria zoals vermeld in de Lijst column.
Stappen :
Volg Step-01 van Methode-1 .
➤ Schrijf de volgende code
Sub filter_met_array_als_criteria_5() Dim k Als Geheel getal Dim ID_range(100) Als String Voor k = 4 Tot 6 ID_range(k) = ActiveSheet.Range("F" & k) Volgende k ActiveSheet.Range("B3:D3").AutoFilter Veld:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub
Hier hebben we verklaard k als Integer , ID_range(100) als String waarbij ID_bereik is een matrix die maximaal 100 waarden. Om de waarden voor deze array te bepalen hebben we hier de FOR-lus voor k van 4 naar 6 als de rijnummers van de Lijst kolom en F is de naam van de kolom.
Tenslotte hebben we deze array gebruikt als Criteria1 voor AutoFilter .
Druk F5 .
Uiteindelijk krijg je de namen en cijfers van de studenten met een id. 101134 , 101135 en 101136 .
Lees meer: Meerdere criteria filteren in Excel met VBA (zowel AND als OR typen)
Methode 6: Gebruik van Naambereik voor Meerdere Criteria
Hier hebben we enkele namen van de studenten in de Lijst kolom en noemde deze reeks als Student Met dit genoemde bereik definiëren we een array die meerdere criteria bevat voor de AutoFilter functie.
Stappen :
Volg Step-01 van Methode-1 .
➤ Schrijf de volgende code
Sub filter_met_array_als_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Veld:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub
Hier hebben we verklaard Studentenbereik , k als Variant en gebruikte de TRANSPOSE functie om de 2D array van het genoemde bereik Student in een 1D array en vervolgens opgeslagen in Studentenbereik Dan wordt het gebruikt als Criteria1 voor de AutoFilter methode.
Druk F5 .
Vervolgens laat u de dataset filteren op meerdere criteria om de naam van de studenten en hun overeenkomstige Ids en Marks voor de studenten Jefferson , Emily en Sara .
Gerelateerde inhoud: VBA om Array in Excel te transponeren (3 methoden)
Methode-7: Filtertabel met meerdere criteria in een matrix
Hier hebben we het volgende Tabel wiens naam Tabel 1 en het gebruik van Excel VBA zullen we proberen deze tabel te filteren op basis van de namen Emily , Daniel en Gabriel als meerdere criteria in een matrix.
Stappen :
Volg Step-01 van Methode-1 .
➤ Schrijf de volgende code
Sub filter_met_array_als_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Veld:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub
Hier, ListObjects("Table1") wordt gebruikt voor het definiëren van de tabel Tabel 1 , Veld:=2 voor het instellen van de tweede kolom van dit bereik als basis voor het filterproces en tot slot hebben we een array gedefinieerd met meerdere namen voor Criteria1 .
Druk F5 .
Uiteindelijk hebt u de dataset gefilterd voor meerdere criteria om de naam van de studenten en hun overeenkomstige Ids en Marks voor de studenten Emily , Daniel en Gabriel .
Lees meer: Excel VBA: Tabel filteren op basis van celwaarde (6 eenvoudige methoden)
Praktijk Sectie
Om zelf te oefenen hebben we een Praktijk sectie zoals hieronder in een blad met de naam Praktijk Doe het alsjeblieft zelf.
Conclusie
In dit artikel hebben we geprobeerd de manieren te behandelen om te filteren met meerdere criteria als een matrix met behulp van Excel VBA Ik hoop dat je het nuttig vindt. Als je suggesties of vragen hebt, voel je vrij om ze te delen in de commentaarsectie.