VBA AutoFilter

Excel VBA AutoFilter

AutoFilter i VBA används som ett uttryck och syntaxen för det enligt Expression. Autofilter (Field, Criteria 1, Operator, Criteria 2, Dropdown) alla argument är valfria. Filtret hjälper till att filtrera den specifika informationen från enorma data.

Om du är en vanlig användare är excel-filter inte en konstig sak för dig. Några av de verktyg vi använder i kalkylbladet är också integrerade i VBA och alternativet för automatisk filter är ett av de viktiga verktygen som finns i VBA. Som vi alla vet är Excel-filter tillgängligt under datafliken.

Med detta filteralternativ kan vi leka med data. Om du har att göra med en minimal mängd data och om du tycker att VBA-alternativet för autofilter inte riktigt krävs kan du fortsätta använda alternativet för kalkylfilter.

Om du hanterar en enorm mängd data kan du använda ett Autofilter-alternativ för att förenkla processflödet.

Syntax för autofilterfunktionen

AutoFilter i Excel VBA kan användas med ett intervallobjekt. Liksom våra andra funktioner har även denna sin egen syntax.

  • Område: Området är helt enkelt i vilket intervall du vill använda filtret.
  • Fält: Fält betyder från vilken kolumn i intervallet du har valt att du vill filtrera bort data. En kolumn räknas från vänster till höger.

Till exempel, om ditt intervall är från A1 till D100 och du vill använda ett filter för D-kolumn är ditt fältnummer 4 eftersom i det valda intervallet D är den fjärde kolumnen.

Kriterier 1: I fältet har du valt vad du vill filtrera.

  • Operatör: Om du vill använda mer än ett kriterium för att filtrera data måste vi använda operatörssymboler. Några av operatörskoderna är som nedan.

xlAnd, xlOr, xlBottom10Items, xlTop10Items, xlTop10Percent, xlBottom10Percent, xlFilterCellColor, xlFilterDynamic, xlFilterFontColor, xlFilterIcon, xlFilterValues.

Kriterier 2: Vad är det andra du vill filtrera tillsammans med Kriterier 1?

  • Synlig rullgardinsmeny: Vill du visa ikonen för filter fop down i den filtrerade kolumnen. Om du vill visa SANT är argumentet, om inte FALSE är argumentet.

Hur applicerar jag filter med VBA AutoFilter? (med exempel)

Du kan ladda ner denna VBA AutoFilter-mall här - VBA AutoFilter-mall

Antag nedan de uppgifter du arbetar med.

Nu med hjälp av VBA-kod kommer vi att använda filtret. Följ stegen nedan för att tillämpa filtret.

Steg 1: Starta delproceduren genom att ge makrot ett namn.

Koda:

 Sub AutoFilter_Example1 () Avsluta Sub 

Steg 2: Det första  är i vilket intervall vi behöver för att tillämpa filtret. I det här fallet måste vi tillämpa intervallet från intervall A1 till E25.

Koda:

 Sub AutoFilter_Example1 () Range ("A1: E25") End Sub 

Steg 3: När området har valts, använd nu alternativet för autofilter.

Koda:

 Sub AutoFilter_Example1 () Range ("A1: E25"). AutoFilter End Sub 

Vi väljer inte några värden med hjälp av ett autofilter utan vi använder bara filtret vid denna tidpunkt.

Kör koden med F5-tangenten eller manuellt infogar den filtret för det valda intervallet.

Så det har använt ett filter på data. Nu kommer vi att se hur man filtrerar bort data.

Exempel # 1 - Filtrera bort data med hjälp av AutoFilter

Tänk på samma data från exemplet ovan. Nu måste vi filtrera bort "Finans" -avdelningen från avdelningskolumnen.

Steg 1: När filtret har applicerats är det första argumentet att nämna från vilken kolumn vi filtrerar data. I det här fallet måste vi filtrera data från kolumnen Avdelning, så kolumnnummer om 5.

Koda:

 Sub AutoFilter_Example1 () Range ("A1: E25"). AutoFilter Field: = 5, End Sub 

Steg 2: Kriterier 1 är inget annat än vad vi vill filtrera från 5: e kolumnen. Så vi måste filtrera bort "Ekonomi".

Koda:

 Sub AutoFilter_Example1 () Range ("A1: E25"). AutoFilter Field: = 5, Criteria1: = "Finance" End Sub 

Så det är allt, kör den här koden manuellt eller genom F5-tangenten filtrerar den bara "Ekonomi" från listan.

Exempel # 2 - Operatör i AutoFilter

Vi har sett hur man filtrerar det enskilda värdet. Nu kommer vi att se hur man filtrerar flera element. Antag att du tillsammans med "Ekonomi" också vill filtrera avdelningen "Försäljning" så att vi kan göra detta genom att använda operatörer.

Steg 1: När du har tillämpat de första kriterierna i nästa argument väljer du operatören som “xlOr”.

Koda:

 Sub AutoFilter_Example2 () Range ("A1: E25"). AutoFilter Field: = 5, Criteria1: = "Finance", Operator: = xlOr End Sub Sub 

Steg 2: Nu i Kriterier 2 nämner värdet som "Försäljning".

Koda:

 Sub AutoFilter_Example2 () Range ("A1: E25"). AutoFilter Field: = 5, Criteria1: = "Finance", Operator: = xlOr, Criteria2: = "Sales" End Sub 

Step 3: Ok, done run this code using F5 key or manually it will filter out both “Finance” & “Sales”.

In the Operator argument, I have used “xlOr” this will select both “Finance” & “Sales” under the filter.

Example #3 – Filter Numbers using AutoFilter

Using Operator symbol “XlAnd” we can filter out numbers as well. Assume from the Overtime column you want to filter out all the values which are >1000 but <3000.

Step 1: The first thing is changing the Field from 5 to 4.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4 End Sub 

Step 2: Criteria 1 is >1000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4,Criteria1:=">1000", End Sub 

Step 3: Here we need to match both the criteria so use “xlAnd” as the operator.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, End Sub 

Step 4: Criteria 2 will <3000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, Criteria2:="<3000" End Sub 

Now if you run this code manually or through the F5 key, it will filter out all the values from the Overtime column which are >1000 but <3000.

Example #4 – Filter from Different Columns using AutoFilter

In order to filter out data from different columns, we need to use a different process. Assume you want to filter out the “Finance” department and also you want to filter out Salary numbers which are >25000 but <40000.

You can use the below code does that.

Code:

 Sub AutoFilter_Example4()       With Range("A1:E25") .AutoFilter Field:=5, Criteria1:="Finance" .AutoFilter Field:=2, Criteria1:=">25000", Operator:=xlAnd, Criteria2:="<40000"       End With End Sub 

This will filter out two columns.

Run this code using the F5 key or you can run manually.

Things to Remember

  • Try different combinations under Operator to get the knowledge of VBA AutoFilter.
  • If you are not sure what to put in try using the macro recorder.
  • If you want to filter out text values then you need to supply them in double-quotes.
  • Use WITH statement to apply more than one column filter.