Suggesties |
voorbeeldbestand
Autofilter
|
1 Van toepassing op 2 Het filterresultaat 2.1 Het filterresultaat markeren 2.2 Het filterresultaat kopiëren 2.3 Het filterresultaat verplaatsen 2.4 Het filterresultaat verwijderen 3 Filtercriteria 3.0 De argumenten van Autofilter 3.1 TEKST 3.2 GETALLEN 3.3 DATUM 3.3.1 Day 3.3.2 Week 3.3.3 Maand 3.3.4 Kwartaal 3.3.5 Jaar 3.3.6 Specifeke maand 3.4 KLEUR 3.5 ICOON 3.5.0 Geen icoon 3.5.1 Iconset 1 3.5.2 Iconset 19 3.5.3 Iconset 9 3.5.4 Iconset 14 3.5.5 Iconset 2 3.5.6 Iconset 10 3.5.7 Iconset 15 3.5.8 Iconset 4 3.5.9 Iconset 6 3.5.10 Iconset 11 3.5.11 Iconset 5 3.5.12 Iconset 13 3.5.13 Iconset 7 3.5.14 Iconset 3 3.5.15 Iconset 8 3.5.16 Iconset 18 3.5.17 Iconset 17 3.5.18 Iconset 20 3.5.19 Iconset 12 3.5.20 Iconset 16 |
Autofilter is een van de basismethoden in Excel. In verschillende versies zijn er uitbreidingen geweest die niet alle even uitgebreid gedocumenteerd zijn in VBA. Deze pagina beschrijft de mogelijkheden in Excel 2010. Een autofilter is van toepassing op een kolom: een volledige of een deel van een kolom. Je kunt kolommen ook als 'velden' van een tabel beschouwen; dan is 'filteren op een kolom' gelijk aan 'filteren op een veld'. sheet1.columns(3).autofilter 1, ... sheet1.usedrange.columns(3).autofilter 1, .... sheet1.usedrange.autofilter 3, .... sheet1.cells(1).currentregion.columns(3).autofilter 1, ... sheet1.cells(1).currentregion.autofilter 3, ... selection.columns(3).autofilter 1, ... selection.autofilter 3, ... sheet1.Listobjects(1).range.columns(3).autofilter 1, ... sheet1.Listobjects(1).range.autofilter 3, ... sheet1.Listobjects(1).databodyrange.columns(3).autofilter 1, ... sheet1.Listobjects(1).databodyrange.autofilter 3, ... Wil je op verschillende kolommen filteren dan zul je verschillende autofilters moeten maken. Die funktioneren dan als "EN" filters: alleen regels die aan beide (of meer) voorwaarden voldoen worden getoond. De eerste rij van een gefilterd gebied beschouwt 'autofilter' als kopregel/veldnamenregel. Deze eerste rij wordt daarom niet gefilterd en blijft daarom altijd zichtbaar. Dat heeft gevolgen voor verdere bewerkingen zoals kopiëren, verwijderen, markeren, etc. Het resultaat van autofilter is, dat rijen die niet aan de filtervoorwaarden voldoen worden verborgen. Het resultaat bestaat dan ook meestal uit niet aaneengesloten gebieden van zichtbare rijen. Met de methode .copy kun je de zichtbare gegevens naar een andere plek in het werkblad of werkboek kopiëren. Daar vormen de gefilterde, gekopieerde gegevens automatisch wél een aaneengesloten gebied. Dat kan handig zijn om die aaneengesloten gegevens voor validatie of de bevolking van een combobox of listbox te gebruiken. 2.1 Het filterresultaat markeren Markeer de gefilterde (zichtbare) rijen met een achtergrondkleur.With cells(1).currentregion
.autofilter 3, "aa17"
End With.interior.colorindex=3 .autofilter Wil je dat niet, gebruik dan: With cells(1).currentregion
.autofilter 3, "aa17"
End With.offset(1).interior.colorindex=3 .autofilter Wil je dat niet, gebruik dan bijvoorbeeld: With cells(1).currentregion
.autofilter 3, "aa17"
End With.offset(1).resize(.rows.count-1).interior.colorindex = 3 .autofilter 2.2 Het filterresultaat kopiëren Kopieer het gefilterde gebied naar werkblad 'sheet2'.With cells(1).currentregion
.autofilter 3, "aa17"
End With.copy sheet2.cells(1) .autofilter De methode copy kopieert automatisch de kopregel/veldnamenregel mee. Als je dat niet wil: With cells(1).currentregion
.autofilter 3, "aa17"
End With.offset(1).copy sheet2.cells(1) .autofilter 2.3 Het filterresultaat verplaatsen: knippen en plakken De methode Range.Cut kan geen niet-aaneengesloten gebieden verplaatsen.Die kan daarom niet gebruikt worden in combinatie met autofilter. 2.4 Het filterresultaat verwijderen De methode Rows.Delete kan wel overweg met een niet-aaneengesloten gebied.With cells(1).currentregion
.autofilter 3, "aa17"
End With.entirerow.delete .autofilter Wil je dat niet gebruik dan: With cells(1).currentregion
.autofilter 3, "aa17"
End With.offset(1).entirerow.delete .autofilter Hieronder voorbeeld VBA-code voor alle verschillende methoden en condities. In de code wordt uitgegegaan van een tabel (zie het voorbeeldbestand). In de tweede kolom staat tekst. In de derde kolom staan datums. In de vierde kolom staan getallen. 3.0 De argumenten van Autofilter expression.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)Field: het nummer van de kolom waarop de filter van toepassing is. Criteria1: de eerste voorwaarde/criterium voor de filtering. Operator: een getal of benoemde constante die de toepassing van de filtervoorwaarde(n) modificeert. Criteria2: een eventule tweede voorwaarde/criterium voor de filtering van dezelfde kolom (hetzelfde veld). VisibleDropDown: wel/niet tonen van het filtericoon Tekst is leeg: Sheet1.ListObjects(1).Range.AutoFilter 2, "=" Sheet1.ListObjects(1).Range.AutoFilter 2, "<>" Sheet1.ListObjects(1).Range.AutoFilter 2, "Raisin" Sheet1.ListObjects(1).Range.AutoFilter 2, "Raisin", 7 Sheet1.ListObjects(1).Range.AutoFilter 2, "Pork", 2, "Quiche" Sheet1.ListObjects(1).Range.AutoFilter 2, Array("Pork", "Quiche"), 7 Sheet1.ListObjects(1).Range.AutoFilter 2, [transpose(G1:G2)], 7 Sheet1.ListObjects(1).Range.AutoFilter 2, "Pork", 1, "Quiche" Sheet1.ListObjects(1).Range.AutoFilter 2, "<>Raisin" Sheet1.ListObjects(1).Range.AutoFilter 2, "Berry*" Sheet1.ListObjects(1).Range.AutoFilter 2, "<>Berry*" Sheet1.ListObjects(1).Range.AutoFilter 2, "*Berry" Sheet1.ListObjects(1).Range.AutoFilter 2, "<>*Berry" Sheet1.ListObjects(1).Range.AutoFilter 2, "*Berry*" Sheet1.ListObjects(1).Range.AutoFilter 2, "*Be??y*" Sheet1.ListObjects(1).Range.AutoFilter 2, "<>*Berry*" Sheet1.ListObjects(1).Range.AutoFilter 4, 146 Sheet1.ListObjects(1).Range.AutoFilter 4, "<>146" Sheet1.ListObjects(1).Range.AutoFilter 4, ">146" Sheet1.ListObjects(1).Range.AutoFilter 4, ">=146" Sheet1.ListObjects(1).Range.AutoFilter 4, "<146" Sheet1.ListObjects(1).Range.AutoFilter 4, "<=146" Sheet1.ListObjects(1).Range.AutoFilter 4, "<=146", 1, ">=100" Sheet1.ListObjects(1).Range.AutoFilter 4, , 3 Je kunt aangeven hoeveel van de hoogste waarden je wil filteren. Dat aantal geef je aan in het argument Criteria1; de operator voor de filtering vanaf de hoogste waarde blijft onveranderd: 3. Zo kun je zowel de hoogste 3 waarden als de hoogste 25 waarden filteren met de operator 'xltop10items'. Getal 12 hoogste waarden: Criteria1 = 12 operator 3 (xltop10items) Sheet1.ListObjects(1).Range.AutoFilter 4,12 , 3 Sheet1.ListObjects(1).Range.AutoFilter 4, , 4 Je kunt aangeven hoeveel van de laagste waarden je wil filteren. Dat aantal geef je aan in het argument Criteria1; de operator voor de filtering vanaf de laagste waarde blijft onveranderd: 4. Zo kun je zowel de laagste 3 waarden als de laagste 25 waarden filteren met de operator 'xlbottom10items'. Getal 12 laagste waarden: Criteria1 = 12 operator 4 (xlbottom10items) Sheet1.ListObjects(1).Range.AutoFilter 4,12 , 4 Sheet1.ListObjects(1).Range.AutoFilter 4, , 5 Je kunt aangeven hoeveel procent van de hoogste waarden je wil filteren. Dat aantal geef je aan in het argument Criteria1; de operator voor de filtering blijft onveranderd: 5. Zo kun je zowel de 3 procent hoogste waarden als de 25 procent hoogste waarden filteren met de operator 'xltop10percent'. Getal 12 procent hoogste waarden: Criteria1 = 12 operator 5 (xltop10percent) Sheet1.ListObjects(1).Range.AutoFilter 4,12 , 5 Sheet1.ListObjects(1).Range.AutoFilter 4, , 6 Je kunt aangeven hoeveel procent van de laagste waarden je wil filteren. Dat aantal geef je aan in het argument Criteria1; de operator voor de filtering blijft onveranderd: 6. Zo kun je zowel de 3 procent laagste waarden als de 25 procent laagste waarden filteren met de operator 'xlbottom10percent'. Getal 12 procent laagste waarden: Criteria1 = 12 operator 6 (xlbottom10percent) Sheet1.ListObjects(1).Range.AutoFilter 4,12 , 6 Sheet1.ListObjects(1).Range.AutoFilter 4, 33, 11 Sheet1.ListObjects(1).Range.AutoFilter 4, 34, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, "=" & Date - 1 Sheet1.ListObjects(1).Range.AutoFilter 3, "<>" & 1 * Date - 1 Sheet1.ListObjects(1).Range.AutoFilter 3, "<" & 1 * Date Sheet1.ListObjects(1).Range.AutoFilter 3, ">" & 1 * Date Sheet1.ListObjects(1).Range.AutoFilter 3, ">" & 1 * Date - 30, 1, "<" & 1 * Date + 30 Sheet1.ListObjects(1).Range.AutoFilter 3, 1, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 2, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 3, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 4, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 5, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 6, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 7, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 8, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 9, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 10, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 11, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 12, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 13, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 14, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 15, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 16, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 21, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 22, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 23, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 24, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 25, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 26, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 27, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 28, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 29, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 30, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 31, 11 Sheet1.ListObjects(1).Range.AutoFilter 3, 32, 11 Voer filterkleur in bij argument Criteria1 als - getal, - RGB(12, 23, 56) , - &HC6FF00 of - als eigenschap van een ander object bijv. Cells(1).Interior.Color Sheet1.ListObjects(1).Range.AutoFilter 4, 8176239, 8 Sheet1.ListObjects(1).Range.AutoFilter 4, rgb(23,46,213), 8 Sheet1.ListObjects(1).Range.AutoFilter 4, &HC6FF00, 8 Sheet1.ListObjects(1).Range.AutoFilter 4, Cells(1).Interior.Color, 8 Sheet1.ListObjects(1).Range.AutoFilter 4, 8176239, 9 Sheet1.ListObjects(1).Range.AutoFilter 4, rgb(23,46,213), 9 Sheet1.ListObjects(1).Range.AutoFilter 4, &HC6FF00, 9 Sheet1.ListObjects(1).Range.AutoFilter 4, Cells(1).Font.Color, 9 Sheet1.ListObjects(1).Range.AutoFilter 4, , 12 Sheet1.ListObjects(1).Range.AutoFilter 4, , 13 Alleen iconen van de 20 ingebouwde iconenverzamelingen kun je daarvoor gebruiken. Bij autofilter moet je bij 'Criteria1' specificeren op welk icoon uit welke iconenverzameling je wil gaan filteren. Criteria1: leeg, operator 14 (xlFilterNoIcon) Sheet1.ListObjects(1).Range.AutoFilter 4, , 14 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(1).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(1).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(1).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(19).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(19).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(19).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(9).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(9).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(9).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(9).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(14).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(14).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(14).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(14).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(14).Item(5), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(2).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(2).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(2).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(10).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(10).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(10).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(10).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(15).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(15).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(15).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(15).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(15).Item(5), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(4).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(4).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(4).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(6).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(6).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(6).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(11).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(11).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(11).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(11).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(5).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(5).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(5).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(13).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(13).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(13).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(13).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(7).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(7).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(7).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(3).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(3).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(3).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(8).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(8).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(8).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(18).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(18).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(18).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(17).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(17).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(17).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(17).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(17).Item(5), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(20).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(20).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(20).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(20).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(20).Item(5), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(12).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(12).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(12).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(12).Item(4), 10 Criteria1 = iconsets: 16 (xl5CRV), Operator = 10 (xlFilterIcon) Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(16).Item(1), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(16).Item(2), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(16).Item(3), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(16).Item(4), 10 Sheet1.ListObjects(1).Range.AutoFilter 4, ThisWorkbook.Iconsets(16).Item(5), 10 |