I VBA kan du skapa Autofilter för att filtrera ett cellintervall eller en Excel -tabell. I den här självstudien lär du dig hur du skapar Autofilter för en eller flera kolumner och för flera villkor.
Om du vill lära dig hur du använder ett avancerat filter i VBA, klicka här: VBA avancerat filter
Skapa AutoFilter i VBA
Först kommer du att se hur du bara skapar Autofilter inom ett intervall, så att en användare kan filtrera data. Data som vi kommer att använda i exemplen finns i bild 1:
Bild 1. Data för AutoFilter -exempel
Här är koden för att skapa Autofilter:
1 | Sheet1.Range ("A1: E1"). AutoFilter |
För att aktivera Autofilter, måste vi ange rubriken för intervallet, i vårt fall A1: E1, och använda Autofilter objektets metod Räckvidd. Som ett resultat har våra dataintervall aktiverat filter:
Bild 2. Autofilter aktiverat för data
Autofilter med fält- och kriterieparametrar
VBA låter dig också automatiskt filtrera ett visst fält med vissa värden.
För att göra detta måste du använda parametrar Fält och Kriterier 1 av metoden Autofilter. I det här exemplet vill vi filtrera den tredje kolumnen (Produkt) för Produkt A endast. Här är koden:
12 | Sheet1.Range ("A1: E1"). Autofilterfält: = 3, _Kriterier1: = "Produkt A" |
I Fält parameter kan du ställa in kolumnens nummer i intervallet (inte i Excel), medan i Kriterier 1 du kan ange värdet som du vill filtrera. Efter att koden har körts ser vår tabell ut så här:
Bild 3. Autofilter med fält och kriterier
Som du kan se är det bara rader med Produkt A i den tredje kolumnen visas i dataområdet.
Autofilter med fält- och flera kriterier
Om du vill filtrera ett fält med flera värden måste du använda parametern Operatör av Autofilter metod. För att filtrera flera värden måste du ange Operatör till xlFilterValues och också att sätta alla värden på Kriterier i en matris. I det här exemplet filtrerar vi Produkt kolumn för Produkt A och Produkt B. Här är koden exempel:
123 | Sheet1.Range ("A1: E1"). Autofilterfält: = 3, _Kriterier1: = Array ("Produkt A", "Produkt B"), _Operatör: = xlFilterValues |
När vi kör koden får vi bara rader med produkt A och produkt B, som du kan se i bild 4:
Bild 4. Autofilter med flera kriterier
AutoFilter Data Range med flera kriterier
Om du vill filtrera ett fält med flera kriterier måste du använda det Kriterier 1 och Kriterier2 parametrar, men också Operatör xlAnd.
I nästa exempel filtrerar vi den första kolumnen (Datum) för datum i december 2022. Därför har vi två kriterier: ett datum större än 12/01/18 och mindre än 31/12/18. Detta är koden:
1234 | Sheet1.Range ("A1: E1"). Autofilterfält: = 1, _Kriterier1: = "> = 12/01/2018", _Operatör: = xlAnd, _Kriterier2: = "<= 31/12/2018" |
När vi kör koden kan du se att endast datum i december visas i dataområdet:
Bild 5. Autofilter med flera kriterier för fältet
Operatörsparametervärden för AutoFilter -metoden
I nästa tabell. du kan se alla möjliga värden för Operatör parameter för AutoFilter -metoden och deras beskrivningar:
Operatör | Beskrivning |
xlOch | Inkluderar flera kriterier - Kriterier1 och Kriterier 2 |
xlOr | Inkluderar ett av flera kriterier - Criteria1 eller Criteria 2 |
xlTop10Produkter | Filtrerar ett visst antal högst rankade värden (antal som anges i kriterier1) |
xlBottom10Produkter | Filtrerar ett visst antal lägst rankade värden (antal som anges i kriterier1) |
xlTop10Procent | Filtrerar en viss procent av högst rankade värden (% specificerat i kriterier1) |
xlBottom10Procent | Filtrerar en viss procent av lägst rankade värden (% specificerat i kriterier1) |
xlFilterValues | Inkluderar flera kriterier med Array |
xlFilterCellColor | Filtrerar celler för färger |
xlFilterFontColor | Filtrerar celler för teckensnittsfärger |
xlFIlterIcon | Filtrerar ikoner |
xlFilterDynamic | Filtrera dynamiska värden |