Manipuleer een tabel
- 07/03/2021
Voorbeeldbestanden bij dit artikel: | |
Een grote tabel manipuleren
We weten allemaal dat grote hoeveelheden gegevens en invoer bewerken niet eenvoudig is. In die gevallen werk ik graag met slicers, aangezien het zo veel gemakkelijker wordt om de juiste rij(en) uit te filteren. Met een handigheidje en een klein beetje VBA code hoef je vaak zelfs niet meer de tabel en de rijen direct te benaderen: het volstaat om bvb. een kleine routine te gebruiken om de gefilterde rij(en) te muteren. Als je wilt lezen over wat slicers zijn en hoe ze te gebruiken, volg dan deze link (Engelstalig).
Neem nu de volgende tabel van bedrijven en maanden en verkochte hoeveelheden:
Links zien we de tabel met gegevens (3 kolommen met invoer, 1 kolom met een formule), en rechts heb ik 3 slicers aangemaakt. 1 slicer per kolom voorzien voor invoer/selecties maken.
Klikken op de relevante keuzes verbergt de nodige andere selecties en rijen waardoor er steeds minder rijen over blijven:
De VBA code is niet zo lastig.
Dim i As Long Dim r As Range If Range("U2").Value > 1 Then MsgBox Range("U2").Value & " rijen blijven over, filter aub tot als er nog maar 1 rij over blijft." & vbCrLf & "De macro wordt gestopt.", vbInformation Exit Sub End If With ActiveSheet.ListObjects(1).ListColumns(4).DataBodyRange.Cells For i = 1 To .CountLarge Set r = .Cells(i) If Not r.EntireRow.Hidden Then r.Value = r.Value + 1 End If Next End With
Cel U2 telt het aantal zichtbare (gefilterde) rijen. Van die cel maken we gebruik in de code. Vervolgens maken we een lus doorheen de zichtbare cellen uit kolom 4 van de tabel. Indien de cel (rij) niet verborgen is dan kunnen we de waarde 1 bij tellen in de cel. We gebruiken de functie SUBTOTAAL.
Met het plus-teken links bovenaan kan je de tabel zichtbaar maken en nadien weer verbergen, al heb je de tabel doorgaans niet vaak meer nodig. De tabel mag ook op een verborgen/ander tabblad staan.
Laat dit template gerust de basis zijn voor jou. Kijk zeker ook naar de andere instellingen van slicers zodat je opmaak en gedrag nog meer kan afstemmen op jouw situatie.