Filteren op geselecteerde cellen

17 november 2014 | onderwerpen: excel, vba, visual basic, data-analyse

Excel heeft met de filter-functie een handige tool. Maar filteren op één of meerdere waarden vraagt bij een groot bestand met veel verschillende waarden om veel handelingen:

  1. activeren filter-tool
  2. uitvinken van ‘Alles selecteren’
  3. aanvinken van de juiste items na zoeken en scrollen

Dat kan sneller!

In plaats van zoeken naar items die wilt filteren in een soms lange lijst, is het makkelijker en sneller als je kunt filteren op de cellen die je in je werkblad selecteert. Dat kan er één zijn, maar ook meerdere tegelijk. Met deze tool kan dat. Zowel voor tekstkolommen als voor getalkolommen. En ook na aanvullen van de tabel met nieuwe gegevens.

Video: Filteren op inhoud geselecteerde cellen
Klik voor vergroting
Filteren op geselecteerde cellen
 
 
Private Sub FilterButton_Click()
 Application.ScreenUpdating = False
 
 Dim r As Long, f As Long, veld As Byte
 Dim SingleCell As Excel.Range
 Dim ar As String, st As String, v As String, bereik As String
 
 'geselecteerde cellen opnemen in array
 For Each SingleCell In Selection.Cells
 v = SingleCell.Text 'gebruik Text i.p.v. Value voor de getallen
 st = st & v & "-"
 Next
 st = Mid(st, 1, Len(st) - 1)
 Arr1 = Split(st, "-")
 
 'selecteren van de tabel op het werkblad
 bereik = Range("tbl.naam").Value
 veld = ActiveCell.Column - (Range(bereik).Column - 1) 'kolomnummer binnen de tabel
 r = Range(bereik).Rows.Count 'aantal rijen van de tabel
 f = Range(bereik).SpecialCells(xlCellTypeVisible).Rows.Count 'aantal van de zichtbare rijen van de tabel
 
 'check of de cel binnen de tabel valt
 If r > f Then
 ActiveSheet.Range(bereik).AutoFilter
 Else
 If Not Intersect(ActiveCell, Range(bereik)) Is Nothing Then
 ActiveSheet.ListObjects(bereik).Range.AutoFilter Field:=veld, Criteria1:=Arr1, Operator:=xlFilterValues
 Else
 MsgBox "Selecteer cellen in de tabel", vbExclamation, "ExcelMeester | Jeroen Neele"
 End If
 End If
End Sub