Excel VBA: Hur man filtrerar med flera kriterier i en matris (7 sätt)

  • Dela Detta
Hugh West

Om du letar efter sätt att filter med flera kriterier i Excel VBA är du på rätt plats. Att filtrera ett stort dataset baserat på flera kriterier kan göras enklare med hjälp av VBA koder i stället för att använda den konventionella funktionen i Excel.

Låt oss börja med vår huvudartikel.

Ladda ner arbetsboken

Filter med flera kriterier.xlsm

7 sätt att filtrera med flera kriterier i matriser med Excel VBA

I följande dataset har vi några poster med betyg som motsvarar elevernas namn och id:n. Vi ska försöka filtrera datasetetet utifrån olika kriterier i form av en array med hjälp av vissa koder.

Vi har använt oss av Microsoft Excel 365 versionen här, men du kan använda andra versioner när det passar dig.

Metod-1: Filtrera med flera kriterier som text i en matris

Här ska vi försöka filtrera följande dataset baserat på Elevens namn kolumn för flera kriterier som innehåller strängarna Emily , Daniel , och Gabriel i en matris.

Step-01 :

➤ Gå till Utvecklare Fliken>> Visual Basic Alternativ.

Därefter är det Redigerare för Visual Basic kommer att öppnas.

➤ Gå till Infoga Fliken>> Modul Alternativ.

Efter detta kommer en Modul kommer att skapas.

Step-02 :

➤ Skriv följande kod

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

Här har vi deklarerat namnen på rubrikerna i intervallet B3:D3 där vi kommer att tillämpa filtret och Fält:=2 är kolumnnumret för det här intervallet som vi kommer att filtrera utifrån.

Slutligen har vi ställt in kriterierna som en array för att ange flera elevers namn, t.ex. Emily , Daniel , och Gabriel .

➤ Press F5 .

Därefter kommer du att filtrera datamängden efter flera kriterier för att visa elevernas namn och deras motsvarande Ids och Marker för eleverna Emily , Daniel , och Gabriel .

Läs mer: Filtrera flera kriterier i Excel (4 lämpliga sätt)

Metod-2: Filtrera med flera antal kriterier i en matris med Excel VBA

Här kommer vi att filtrera ned följande dataset för id:erna 101135 , 101137 , och 101138 genom att använda dessa siffror som flera kriterier i en matris.

Steg :

➤ Följ Step-01 Metod-1 .

➤ Skriv följande kod

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

Här har vi deklarerat namnen på rubrikerna i intervallet B3:D3 där vi kommer att tillämpa filtret och Fält:=2 är kolumnnumret för det här intervallet som vi kommer att filtrera utifrån.

Slutligen har vi ställt in kriterierna som en array för att deklarera flera elevers id:n, t.ex. 101135 , 101137 , och 101138 och vi har satt dem inom anföringstecken för att ange dem som strängar, eftersom AutoFilter fungerar endast för en array av strängar.

➤ Press F5 .

Därefter får du namnen och betygen för de elever som har id-uppgifter. 101135 , 101137 , och 101138 .

Läs mer: VBA för att hämta unika värden från kolumnen till matrisen i Excel (3 kriterier)

Metod-3: Ange flera kriterier i ett intervall för att använda som matris

Här har vi listat kriterierna i den Lista kolumnen med id-numren 101134 , 101135 , och 101136 som vi kommer att använda för vår filtreringsprocess.

Steg :

➤ Följ Step-01 Metod-1 .

➤ Skriv följande kod

 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 

Här har vi deklarerat ID_område , k som Variant och ID_område är matrisen som kommer att lagra flera kriterier, och k är ökningen från den nedre gränsen till den övre gränsen för denna matris. För att få den nedre gränsen och den övre gränsen använde vi LBOUND-funktionen och UBOUND-funktionen respektive.

FOR-slinga används för att konvertera andra värden än strängar i matrisen till strängar med hjälp av CStr-funktion Slutligen har vi utnyttjat denna matris som Kriterier1 .

➤ Press F5 .

Därefter får du namnen och betygen på de elever som har id:n. 101134 , 101135 , och 101136 .

Läs mer: Filtrera olika kolumner med flera kriterier i Excel VBA

Liknande läsningar

  • Filtrera unika värden i Excel (8 enkla sätt)
  • Utföra anpassade filter i Excel (5 sätt)
  • Beräkna medelvärdet av en matris med VBA (makro, UDF och UserForm)
  • Genväg för Excel-filter (3 snabba användningsområden med exempel)

Metod-4: Använd SPLIT- och JOIN-funktionerna för att skapa matriser med flera kriterier

Här kommer vi att använda följande lista i Lista kolumnen som en array och för att filtrera datamängden på rätt sätt kommer vi också att använda SPLIT-funktionen , JOIN-funktion , och TRANSPOSE-funktionen i en VBA kod.

Steg :

➤ Följ Step-01 Metod-1 .

➤ Skriv följande kod

 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 

Här, TRANSPOSE omvandlar den 2D array till en 1D annars AutoFilter kommer inte att fungera, JOIN sammanfogar varje värde till en array av strängar, och slutligen, SPLIT kommer att dela upp varje sträng för att ge inmatningen dem separat som kriterier för filtrering av datamängden.

➤ Press F5 .

Slutligen får du namnen och betygen för de elever som har id-uppgifter. 101134 , 101135 , och 101136 .

Läs mer: Hur du delar en sträng i en matris i VBA (3 sätt)

Metod-5: Filtrera med flera kriterier i en slinga för array med VBA

I det här avsnittet kommer vi att filtrera ned följande dataset beroende på Student-ID kolumnen för flera kriterier som anges i Lista kolumn.

Steg :

➤ Följ Step-01 Metod-1 .

➤ Skriv följande kod

 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 

Här har vi deklarerat k som Heltal , ID_intervall(100) som Sträng där ID_område är en matris som lagrar upp till 100 värden. För att bestämma värdena för denna matris har vi här använt FOR-slinga för k från 4 till 6 som radnummer i Lista kolumnen och F är kolumnnamnet.

Slutligen har vi använt denna matris som Kriterier1 för AutoFilter .

➤ Press F5 .

Så småningom får du namnen och betygen på de elever som har id-uppgifter. 101134 , 101135 , och 101136 .

Läs mer: Filtrera flera kriterier i Excel med VBA (både AND och OR)

Metod-6: Använda namngivna intervall för flera kriterier

Här har vi listat några av namnen på studenterna i Lista kolumnen och namngav detta intervall som Studerande Med hjälp av detta namngivna intervall kommer vi att definiera en matris som kommer att innehålla flera kriterier för AutoFilter funktion.

Steg :

➤ Följ Step-01 Metod-1 .

➤ Skriv följande kod

 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 

Här har vi deklarerat Student_område , k som en Variant , och använde sig av TRANSPOSE-funktionen för att omvandla 2D matris för det namngivna intervallet Studerande till en 1D och lagrade den sedan i Student_område . Därefter används den som Kriterier1 för AutoFilter metod.

➤ Press F5 .

Därefter kommer du att filtrera datamängden efter flera kriterier för att visa elevernas namn och deras motsvarande Ids och Marker för eleverna Jefferson , Emily , och Sara .

Relaterat innehåll: VBA för att transponera matriser i Excel (3 metoder)

Metod-7: Filtrera tabell med flera kriterier i en matris

Här har vi följande Tabell vars namn är Tabell1 och användning av Excel VBA Vi kommer att försöka filtrera tabellen utifrån namnen. Emily , Daniel , och Gabriel som flera kriterier i en matris.

Steg :

➤ Följ Step-01 Metod-1 .

➤ Skriv följande kod

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

Här, ListObjects("Table1") används för att definiera tabellen Tabell1 , Fält:=2 för att ställa in den andra kolumnen i detta intervall som en bas för filtreringsprocessen och slutligen har vi definierat en matris som innehåller flera namn för Kriterier1 .

➤ Press F5 .

Så småningom kommer du att ha datamängden filtrerad för flera kriterier för att visa elevernas namn och deras motsvarande Ids och Marker för eleverna Emily , Daniel , och Gabriel .

Läs mer: Excel VBA: Filtrera tabell baserat på cellvärde (6 enkla metoder)

Övningssektionen

För att du ska kunna öva på egen hand har vi tillhandahållit en Praktik som nedan i ett ark som heter Praktik . Gör det själv.

Slutsats

I den här artikeln har vi försökt att täcka sätten att filtrera med flera kriterier som en array med Excel. VBA Om du har några förslag eller frågor får du gärna dela med dig av dem i kommentarsfältet.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.