Excel VBA: Sådan filtreres med flere kriterier i Array (7 måder)

  • Del Dette
Hugh West

Hvis du leder efter måder at filter med flere kriterier array i Excel VBA , så er du kommet til det rette sted. Filtrering af et stort datasæt baseret på flere kriterier kan gøres lettere ved hjælp af VBA koder i stedet for at bruge den konventionelle funktion i Excel.

Så lad os starte vores hovedartikel.

Download arbejdsbog

Filter med flere kriterier.xlsm

7 måder at filtrere med flere kriterier i arrayet ved hjælp af Excel VBA

I det følgende datasæt har vi nogle registreringer af karakterer, der svarer til elevernes navn og id'er. Vi vil forsøge at filtrere dette datasæt på grundlag af forskellige kriterier som et array ved hjælp af nogle koder.

Vi har brugt Microsoft Excel 365 version her, men du kan bruge andre versioner, hvis det passer dig.

Metode-1: Filter med flere kriterier som tekster i et array

Her vil vi forsøge at filtrere følgende datasæt på grundlag af Navn på den studerende kolonne for flere kriterier, der indeholder strengene Emily , Daniel , og Gabriel i et array.

Step-01 :

➤ Gå til Udvikler Fane>> Visual Basic Mulighed.

Derefter er det Visual Basic-editor vil åbne sig.

➤ Gå til Indsæt Fane>> Modul Mulighed.

Herefter skal en Modul vil blive oprettet.

Step-02 :

➤ Skriv følgende kode

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

Her har vi angivet overskriftsnavne i området B3:D3 hvor vi anvender filteret og Felt:=2 er kolonnenummeret for dette område, som vi vil filtrere ud fra.

Endelig har vi indstillet kriterierne som et array til angivelse af flere elevers navne, f.eks. Emily , Daniel , og Gabriel .

➤ Tryk på F5 .

Derefter vil du have datasættet filtreret efter flere kriterier for at vise elevernes navn og deres tilsvarende Ids og Marks for de studerende Emily , Daniel , og Gabriel .

Læs mere: Filtrere flere kriterier i Excel (4 egnede måder)

Metode-2: Filter med flere talkriterier i arrayet ved hjælp af Excel VBA

Her vil vi filtrere følgende datasæt for id'er 101135 , 101137 , og 101138 ved at bruge disse tal som flere kriterier i et array.

Trin :

➤ Følg Step-01 Metode-1 .

➤ Skriv følgende kode

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

Her har vi angivet overskriftsnavne i området B3:D3 hvor vi anvender filteret og Felt:=2 er kolonnenummeret for dette område, som vi vil filtrere ud fra.

Endelig har vi indstillet kriterierne som et array til angivelse af flere elevers id'er som f.eks. 101135 , 101137 , og 101138 og vi har sat dem i anførselstegn for at angive dem som strenge, fordi AutoFilter fungerer kun for et array af strenge.

➤ Tryk på F5 .

Derefter får du navnene og karaktererne for de studerende med id'er 101135 , 101137 , og 101138 .

Læs mere: VBA til at hente unikke værdier fra kolonne til array i Excel (3 kriterier)

Metode-3: Indstilling af flere kriterier i et område til brug som array

Her har vi oplistet kriterierne i den Liste kolonne med id'er 101134 , 101135 , og 101136 på grundlag af hvilken vi vil foretage vores filtreringsproces.

Trin :

➤ Følg Step-01 Metode-1 .

➤ Skriv følgende kode

 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 

Her har vi erklæret ID_range , k som Variant og ID_range er det array, der skal gemme flere kriterier, og k er stigningen fra den nedre grænse til den øvre grænse for dette array. For at få den nedre grænse og den øvre grænse har vi brugt LBOUND-funktion og UBOUND-funktion henholdsvis.

FOR-løkke bruges til at konvertere andre værdier end strenge i arrayet til strenge ved hjælp af CStr-funktion Endelig har vi brugt dette array som Kriterier1 .

➤ Tryk på F5 .

Herefter får du navnene og karaktererne for de studerende med id'er 101134 , 101135 , og 101136 .

Læs mere: Filtrer forskellige kolonner efter flere kriterier i Excel VBA

Lignende læsninger

  • Sådan filtreres unikke værdier i Excel (8 nemme måder)
  • Udfør brugerdefineret filter i Excel (5 måder)
  • Beregne gennemsnittet af en array med VBA (makro, UDF og UserForm)
  • Genvej til Excel-filter (3 hurtige anvendelser med eksempler)

Metode-4: Brug af SPLIT- og JOIN-funktioner til at oprette et array med flere kriterier

Her vil vi bruge følgende liste i den Liste kolonnen som et array, og for at filtrere datasættet korrekt vil vi også bruge SPLIT-funktion , JOIN-funktion , og TRANSPOSE-funktion i en VBA kode.

Trin :

➤ Følg Step-01 Metode-1 .

➤ Skriv følgende kode

 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 

Her, TRANSPOSE vil konvertere den 2D array til en 1D array ellers AutoFilter vil ikke fungere, JOIN samler hver af værdierne til et array af strenge, og endelig, SPLIT opdeler hver streng for at give input dem separat som kriterier for filtrering af datasættet.

➤ Tryk på F5 .

Til sidst får du navnene og karaktererne for de studerende med id'er 101134 , 101135 , og 101136 .

Læs mere: Sådan opdeles en streng i et array i VBA (3 måder)

Metode-5: Filter med flere kriterier i en sløjfe til array med VBA

I dette afsnit vil vi filtrere følgende datasæt afhængigt af Id for studerende kolonne for flere kriterier som anført i Liste kolonne.

Trin :

➤ Følg Step-01 Metode-1 .

➤ Skriv følgende kode

 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 

Her har vi erklæret k som Hele tal , ID_range(100) som String hvor ID_range er et array, der kan gemme op til 100 værdier. For at bestemme værdierne for dette array her har vi brugt FOR-løkke til k fra 4 til 6 som rækkenumrene i Liste kolonne og F er kolonnens navn.

Endelig har vi brugt dette array som Kriterier1 til AutoFilter .

➤ Tryk på F5 .

Til sidst får du navnene og karaktererne for de elever, der har id'er 101134 , 101135 , og 101136 .

Læs mere: Filtrere flere kriterier i Excel med VBA (både AND og OR-typer)

Metode-6: Brug af navngivet område til flere kriterier

Her har vi listet nogle navne på de studerende i Liste kolonne og navngav dette område som Studerende Ved hjælp af dette navngivne område vil vi definere et array, der vil indeholde flere kriterier for den AutoFilter funktion.

Trin :

➤ Følg Step-01 Metode-1 .

➤ Skriv følgende kode

 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 

Her har vi erklæret Student_range , k som en Variant , og brugte den TRANSPOSE-funktion til at konvertere den 2D array af det navngivne område Studerende til en 1D array og derefter gemt det i Student_range . Derefter anvendes det som Kriterier1 for den AutoFilter metode.

➤ Tryk på F5 .

Derefter vil du have datasættet filtreret efter flere kriterier for at vise elevernes navn og deres tilsvarende Ids og Marks for de studerende Jefferson , Emily , og Sara .

Relateret indhold: VBA til at transponere array i Excel (3 metoder)

Metode-7: Filtrer tabel med flere kriterier i et array

Her har vi følgende Tabel hvis navn er Tabel 1 og ved hjælp af Excel VBA vi vil forsøge at filtrere denne tabel ned på grundlag af navnene Emily , Daniel , og Gabriel som flere kriterier i et array.

Trin :

➤ Følg Step-01 Metode-1 .

➤ Skriv følgende kode

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

Her, ListObjects("Table1") anvendes til at definere tabellen Tabel 1 , Felt:=2 til at opstille den anden kolonne i dette område som grundlag for filtreringsprocessen, og endelig har vi defineret et array med flere navne for Kriterier1 .

➤ Tryk på F5 .

Til sidst vil du have datasættet filtreret efter flere kriterier for at vise elevernes navn og deres tilsvarende Ids og Marks for de studerende Emily , Daniel , og Gabriel .

Læs mere: Excel VBA: Filtrer tabel baseret på celleværdi (6 nemme metoder)

Øvelsesafsnit

For at du kan øve dig selv, har vi givet dig en Praksis afsnit som nedenfor i et ark med navnet Praksis . gør det venligst selv.

Konklusion

I denne artikel har vi forsøgt at beskrive, hvordan du kan filtrere med flere kriterier som et array ved hjælp af Excel VBA Hvis du har forslag eller spørgsmål, er du velkommen til at dele dem i kommentarfeltet.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.