Doorgaan naar hoofdcontent

Excel: draaitabel baseren op een benoemde "tabel"

Op het gevaar af een open deur in te trappen toch maar even over de draaitabel op basis van een benoemde "tabel". Elke keer als ik mensen vertel dat dat in Excel toch echt de beste manier is, stuit ik in de meeste gevallen op: "nooit eerder gehoord".

Hoe werkt het? Stel we hebben een lijst in Excel. Ik heb hier even de gegevens van de Orderinformatie uit de database Noordenwind gebruikt.


Als we hier op de gewone manier een draaitabel van maken via Invoegen => Draaitabel, zien we:


We zien dat het bereik er letterlijk in staat: Blad1!$A$1:$E$2145. Als we de draaitabel gemaakt hebben en het bereik wordt groter, dan hebben we een probleempje. Ik zie veel mensen dit oplossen door maar te kiezen voor bijvoorbeeld: Blad1!$A:$E. Hoppakee, we pakken de hele kolommen maar.

Dit werkt in zekere zin voor nieuwe rijen, maar als er een kolom bij komt, moeten we toch het bereik gaan uitbreiden.

Hoe werkt het nu als we er eerst een "tabel" van maken? Dit kan trouwens op twee manieren. Allereerst kunnen we op de tab Start kiezen voor Opmaken als tabel. De tweede mogelijkheid is via de tab Invoegen kiezen voor de optie Tabel. In beide gevallen verschijnt (bij de eerste optie in tweede instantie; bij de twee optie direct):


Als we op OK klikken, heeft Excel een benoemde tabel gemaakt. Als we dit voor het eerst doen in een bestand, heeft deze tabel de naam Tabel1 gekregen. We kunnen dit zien door in de tab Start te kiezen voor Formules => Namen beheren.


We kunnen hier ook de naam veranderen in bijvoorbeeld Orderinformatie. Dat houdt de boel overzichtelijk als we met meer tabellen gaan werken. Het bereik kunnen we niet aanpassen. Dit doet Excel voor een tabel al automatisch!

Als we nu weer een draaitabel gaan maken, zien we:


In plaats van Blad1!$A$1:$E$2145 zien we nu de naam Orderinformatie staan. Gaan we door, dan krijgen we een reguliere draaitabel met alle beschikbare rijen en kolommen.

Terug naar onze tabel. Als we daar een kolom Omzet toevoegen met als formule Prijs per eenheid * Hoeveelheid, zien we dat de tabel zich heel anders gedraagt dan regulier Excel. De formule ziet er namelijk als volgt uit:

=[@[Prijs per eenheid]]*[@Hoeveelheid]

Als we op ENTER drukken, wordt de formule ook gelijk tot het einde van de tabel doorgetrokken. Hier hoeven we niet voor te doen.

Terug naar het blad met de draaitabel. Hier zien we onze nieuwe kolom nog niet. Als we met de cursor in de draaitabel gaan staan en we kiezen op de tab Analyseren voor Alles vernieuwen (eventueel klikken op het floepje onder de knop Vernieuwen), dan zal onze nieuwe kolom ook zichtbaar worden! Hetzelfde verhaal geldt voor nieuwe rijen.

De draaitabel zelf heeft trouwens ook een optie Gegevens vernieuwen bij het openen van het bestand. Staat deze optie aan, dan worden eventuele nieuwen kolommen en rijen automatisch aan de draaitabel toegevoegd.

Het werken met Excel tabellen heeft vanaf versie 2013 nog andere voordelen:

  • berekenen van unieke aantallen.
  • maken van draaitabellen over meerdere tabellen.
Beide onderwerpen heb ik besproken in eerdere blogs:
Klik hier en hier.

Voor verder Excel tips klik hier.

Reacties

Populaire posts van deze blog

Excel: VBA script om wachtwoord te verwijderen

Af en toe krijg ik een vraag om een wachtwoord van een Excel blad te halen. Doodsimpel met VBA. Hier een script dat ik gebruik: Sub WachtwoordCrack()     Dim a As Integer, b As Integer, c As Integer, d As Integer, _     e As Integer, f As Integer, g As Integer, h As Integer, _  I As Integer, j As Integer, k, m As Integer     Dim begin As Date, eind As Date     Dim duur As String     Dim objSheet As Worksheet     begin = TimeValue(Time)     On Error Resume Next     For Each objSheet In Application.Worksheets         For a = 65 To 66: For b = 65 To 66: For c = 65 To 66             For d = 65 To 66: For e = 65 To 66: For f = 65 To 66                 For g = 65 To 66: For h = 65 To 66: For I = 65 To 66                     For j = 65 To 66: For k = 65 To 66: For m = 32 To 126                         ActiveSheet.Unprotect Chr(a) & Chr(b) & _   Chr(c) & Chr(d) & Chr(e) & Chr(f) & _   Chr(g) & Chr(h) &  Chr(I) & Chr(j) & C

Excel 2013: uniek aantal in draaitabel

Tot en met versie 2010 was het in Excel lastig om in een draaitabel een uniek aantal (DISTINCT COUNT) te tellen. We geven een voorbeeld op basis van een verkoperslijst. In deze lijst kunnen we zien welke verkopers welke artikelen hebben verkocht. Willen we nu in een draaitabel laten zien hoeveel artikelen een verkoper heeft verkocht, dan krijgen we wel de aantallen maar niet de unieke aantallen te zien. Om toch de unieke aantallen te laten zien, hebben we een aantal stappen nodig. Op het moment dat we de draaitabel invoegen, krijgen we in Excel 2013 dit dialoogvenster: Onderaan zien we daar een nieuwe optie: Deze gegevens toevoegen aan het gegevensmodel . Deze optie moeten we aanvinken, voor we op OK klikken. We krijgen dan een iets ander beeld dan normaal: Normaliter krijgen we alleen de veldnamen. Nu zien we er het woord Bereik boven staan. Voor het voorbeeld heb ik nu Verkoper toegevoegd aan Rijen en Artikelomschrijving aan Waarden . Het resultaat is identiek

Excel: laatste datum voor een groep, draaitabel of matrixformule?

Via een Excel groep krijg ik de vraag hoe je de laatste datum voor een groep er uit kunt pikken. We geven hier even de voorbeelddata: Voor zover ik kan zien zijn er in ieder geval twee mogelijkheden: met matrixformules en met een draaitabel . Oplossing: draaitabel We zullen het in dit voorbeeld maar even helemaal volgens de regels van de Excel kunst doen. Voor het maken van de draaitabel heb ik de lijst eerst omgezet naar een tabel ( INVOEGEN => DRAAITABEL ). De naam veranderen we dan even van Tabel1 in draaitabel . Vervolgens maken we de draaitabel. Via Waardeveldinstellingen kiezen we dan voor het datumveld voor Max en bij Getalnotatie voor Datum . De kopjes zetten we even om naar Naam en Laatste datum . Klaar. Oplossing: matrixformules Voor dat we de matrixformules gaan maken, creëren we eerst namen met flexibele bereiken: datum =VERSCHUIVING(Blad1!$B$2;0;0;AANTALARG(Blad1!$B:$B)-1;1) naam =VERSCHUIVING(Blad1!$A$2;0;0;AANTALARG(Blad1!$A:$A