Wat zit er in de diepvriezer ?
- 15/08/2020
Voorbeeldbestanden bij dit artikel: | |
Inleiding
Sinds het vorige artikel op mijn site weten jullie dat ik ook mijn bijdrage lever in de strijd tegen voedselverspilling. Via de app van Too good to go kan je pakketjes ophalen bij deelnemende handelaars zo rond tegen sluitingstijd gewoonlijk. Bedoeling is het ophalen (kopen) van voedingsmiddelen die anders aan het einde van de dag onverkocht bij de handelaars in de vuilbak gegooid worden. Je betaalt slechts een fractie (1/3-1/2 ongeveer) van de echte waarde van de producten, vaak zelfs minder.
Daarbij speelt het volgende. De onverkochte producten zijn doorgaans producten met een houdbaarheidsdatum die nogal strak is. Mocht dat niet het geval zijn, dan zouden handelaars niet geneigd zijn om die producten goedkoop weg te schenken. Dat betekent dat de koper van een pakketje meestal niet zo heel veel tijd meer heeft om de producten te verbruiken. Met andere woorden, nogal wat van de aangekochte producten belanden, al dan niet bewerkt, in de diepvriezer. Die begint uiteraard ook wat voller te geraken.
Zo is het huidige artikel tot stand gekomen. Ik was aan het experimenteren met slicers in Excel. Die gebruik je om data te filteren in de volgende Excel objecten:
- een draaitabel
- een draaigrafiek
- een Excel tabel (ListObject)
Een goed aantal van de verschillende mogelijkheden gaan we bekijken in het bijgaande voorbeeldbestand en de rest van de tekst hieronder.
Op de afbeelding zien we alvast 5 slicers: 4 groene en 1 blauwe. Deze slicers worden geconnecteerd naar diverse kolommen uit een tabel (ListObject):
De opmaak is bewust simpel gehouden. Ik had een soort automatisch kleurenpatroon kunnen loslaten op de tabel, zoals dit:
Dit kan je instellen, zoals aangegeven op de afbeelding, bij Tabelontwerp en Tabelstijlen. Ik hield het hier liever sober qua opmaak, maar ik wens wel de functionaliteiten van een tabel te gebruiken. O.a. het automatisch doorvoeren van formules in alle rijen van een kolom.
De volgende kolommen vond ik nuttig voor deze oefening:
- ID: een uniek nummer voor elke rij (een oplopend nummertje)
- Diepvriezer item: een passende omschrijving
- Hoeveelheid: van het benoemde item
- Type: een categorisering, high-level eerst (uitleg volgt nog)
- Type_2: een subrubriek van de kolom "Type"
- Datum: de originele houdbaarheidsdatum
- Oud: van aankoop/invriezen
- Winkel: van aankoop
- Slicer_detailed: Een concatenatie van andere kolommen, om te gebruiken in één van de slicers
- Sort: een kolom met een uniek oplopend nummer. Als je snel verschillende rijen van plaats wil verwisselen, gebruik ik deze truc. Pas 1 of meer nummertjes aan, de nummertjes van de rijen die moeten van plaats veranderen. Vervolgens sorteer je de tabel op kolom J zodat de nummers weer in oplopende volgorde staan. Je hoeft niet noodzakelijk gehele getallen te gebruiken: decimale getallen kunnen ook gesorteerd worden.
Bekijken we vervolgens de verschillende slicers en hoe ze te relateren zijn aan de opgelijste kolommen:
- Type: dit is kolom D uit de tabel
- Type_2: dit is kolom E uit de tabel
- Item: dit is kolom B uit de tabel
- Hoeveelheid/datum: dit is kolom I uit de tabel
- Winkel: dit is kolom H uit de tabel
Je maakt dan kinderlijk eenvoudig selecties in de slicers, en daardoor filter je eigenlijk rijen uit de bijhorende tabel. Maar daardoor gaan er in andere niet-gefilterde kolommen ook minder mogelijkheden te kiezen zijn. Dat wil zeggen dat de bijhorende slicer van die kolom mee gefilterd wordt. Een keuze in een filter kan m.a.w. een impact hebben op de mogelijke keuzes in andere slicers. Overigens kan je ook via de Ctrl toets meerdere keuzes tegelijk maken in 1 slicer.
Dat keuzes maken in slicers leidt tot uitgefilterde rijen kan ik hier laten zien. De bovenstaande selecties hebben een kleinere tabel als gevolg:
Deze 4 rijen blijven over na uitfilteren van "Maaltijd" en "Vlees" in de slicers.
Dit is dan ook hoe ik vaak een tabel bekijk / update / aanpas: ik verklein met slicers het aantal rijen tot bvb. 1 of een paar rijen. Dan open ik met de details (tabel) via het plus symbool en is de input snel gebeurd:
De hoeveelheid "Worsten" is snel aangepast als je het hebt uitgefilterd via de slicers.
Tot slot vermeld ik nog een stukje VBA-code. Als er selecties gemaakt werden in meerdere slicers, dan wil je ze ook snel terug "ongefilterd" willen zien: alle rijen in de tabel, of anders gezegd, geen enkele selectie in de 5 slicers. Ofwel doe je dat door in de tabel te gaan staan en het filter-icoontje uit te zetten. Ofwel gebruik je VBA-code om alle slicers na te lopen en aan te passen:
Sub Unfilter_All_Slicers()Dim sc As SlicerCache Dim sl As Slicer For Each sc In ActiveWorkbook.SlicerCaches For Each sl In sc.Slicers If sl.Parent.name = ActiveSheet.Name Then sc.ClearManualFilter End If Next NextEnd Sub
We maken een lus doorheen alle slicercaches van het actieve bestand. Een slicer hangt namelijk vast aan een slicercache. Daarna vragen we alle slicers op die gelinkt zijn aan de slicercache. Tot slot zetten we de manuele filter uit voor elk van de slicers, zo lang die slicer zich maar op het actieve tabblad bevindt.
Dat was het !