Pivottabeller i Excel er avgjørende for å gjøre data enklere å forstå og forstå. En pivottabell kan kondensere og knuse data til meningsfulle strukturer. MS Excel-brukere har bredt adoptert dem innen dataindustrien.

Visste du at du kan automatisere pivottabellene dine i Excel og lage dem med et enkelt klikk? MS Excel integreres godt med VBA og har blitt et utmerket verktøy for å automatisere repeterende oppgaver.

Slik kan du automatisere en pivottabell med en makro i MS Excel VBA.

Bruk et praksisdatasett

Du kan laste ned og bruke en dummy datasett fra Tableau for å følge VBA-skriptet i denne veiledningen. VBA-koden vil fungere med alle andre datasett, med noen få grunnleggende justeringer. Før du starter, sørg for at du har aktiverte makroer i Excel-arbeidsboken.

Det er noen viktige kolonner du kan bruke i pivottabellen. For å forstå tabellens nyanser og endelige struktur kan du lage en grunnleggende pivottabell manuelt med følgende elementer:

  • Filter: Region
  • Rader: Underkategori
  • Kolonner: Stat
  • Verdier: Salg

Endepivoten skal se slik ut:

Du kan imidlertid la VBA gjøre det automatisk i stedet for å forberede det manuelt.

Hvordan lage pivottabeller automatisk i Excel

For å automatisere pivottabellene dine med VBA, åpne en ny Excel-fil og gi nytt navn til arkene som følger:

  • Første ark: Makro
  • Andre ark: Data

De Makro arket inneholder makroskriptet, mens Data arket inneholder dataene dine. På makroarket kan du sette inn hvilken som helst form og tilordne makroen til den. Høyreklikk på formen, og klikk på Tilordne makro.

I den følgende dialogboksen klikker du på navnet på makroen og klikker OK. Dette trinnet tildeler makroen til formen.

1. Åpne Excel VBA Coding Editor

trykk Alt + F11 for å åpne kodeeditoren. Når du er i koderedigering, høyreklikker du på filnavnet, etterfulgt av Sett inn og Modul. Det er viktig å huske at du vil skrive all VBA-kode i en modul før du kjører den.

Det er en god praksis å bruke et modulnavn som stemmer overens med formålet med koden. Siden dette er en demo, kan du definere modulnavnet som følger:

sub pivot_demo()

Modulnavnet slutter med End Sub, som er sluttkommandoen til en modul:

Slutt Under

2. Deklarer variabler

Innenfor modulen starter du med å deklarere variabler for å lagre noen brukerdefinerte verdier du vil bruke i skriptet. Du kan bruke Dim uttalelse for å erklære variabler, som følger:

Dim PSark Som Arbeidsark, DSark Som Arbeidsark
Dim PvtCache Som PivotCache
Dim PvtTable Som Pivottabell
Dim PvtRange Som Område
Dim Last_Row Som Long, Last_Col Som Lang
Dim sht1 som Variant

Du skal bruke disse variablene for følgende:

  • PSark: Destinasjonsarket, der VBA vil opprette en pivot.
  • DSark: Databladet.
  • PvtCache: En pivotbuffer holder pivoten.
  • PvtTable: Pivottabellobjektet.
  • PvtRange: Et dataområde for pivoten.
  • Last_Row og Last_Col: Sist fylte rad og kolonne i dataarket (DSheet).
  • Sht1: Denne variabelen er en variant.

3. Undertrykk advarsler og meldinger

Unødvendige feil, advarsler og meldinger bremser VBA-kodene dine. Ved å undertrykke slike meldinger kan du fremskynde prosessen betraktelig.

Bruk følgende kode:

Feil Fortsett neste

Med applikasjon
.DisplayAlerts = Falsk
.ScreenUpdating = Falsk
SluttMed

Hvor:

  • Ved feil på gjenoppta neste: Denne klausulen undertrykker alle kjøretidsfeil.
  • Applikasjon: Søknad refererer til MS Excel.
  • Vis varsler: DisplayAlerts-egenskapen definerer om varsler skal vises.
  • Skjermoppdatering: Denne egenskapen definerer om endringer skal oppdateres i sanntid eller bare når koden er ferdig kjørt.

Når denne koden kjører, undertrykker den alle varsler, advarsler og meldinger som Excel ellers ville vise. Du kan slå av DisplayAlerts og ScreenUpdating-parametere ved å sette verdiene deres til Falsk.

Mot slutten av koden kan du slå dem på igjen ved å sette verdien som ekte.

4. Slett alle eksisterende pivotark

For å lage en ny pivottabell har du to alternativer. Først sletter du det eksisterende pivot-arket og bruker VBA til å lage et nytt ark for å lagre pivoten. Alternativt kan du bruke et eksisterende regneark til å holde pivoten.

I denne veiledningen, la oss lage et nytt pivotark for å lagre pivottabellen.

De for hver loop går gjennom hvert ark i arbeidsboken og lagrer arknavnet i sht1 variabel. Du kan bruke et hvilket som helst variabelnavn (sht1) for å holde arknavnet. Løkken går gjennom hvert ark i gjeldende arbeidsbok, og ser etter et med det spesifikke navnet (Dreie).

Når arknavnet samsvarer, sletter det arket og går til neste ark. Når koden sjekker alle arkene, går den ut av løkken og går til neste del av koden, som legger til et nytt ark, Dreie.

Slik kan du gjøre det:

TilHversht1IActive Workbook.Arbeidsark
Hvis sht1.Name = "Dreie" Deretter
sht1.Slett
SluttHvis
Neste sht1

Arbeidsark. Legg til. Navn = "Dreie"

5. Definer datakilde og pivotark

Det er viktig å lage variabler for å lagre referansene til Pivot- og Databladene. Disse fungerer som snarveier, som du kan referere til gjennom resten av koden.

Sett PSheet = Regneark("Dreie")
Sett DSheet = Regneark("Data")

6. Identifiser den sist brukte raden og kolonnen

Denne delen av koden fungerer dynamisk, ettersom den øker den siste fylte raden og kolonnen i dataene.

Siste_rad = DSark. Celler (rader. Tell, 1). Slutt (xlUp). Rad
Last_Col = DSheet. Celler (1, kolonner. Count).End (xlToLeft).Kolonne
Sett PvtRange = DSheet. Celler(1, 1).Endre størrelse (Last_Row, Last_Col)

Hvor:

  • Siste_rad: Variabel for å lagre det siste fylte radnummeret, dvs. 9995
  • Siste_kolonne: Variabel for å lagre det siste fylte kolonnenummeret, dvs. 21
  • PvtRange: PvtRange refererer til hele dataområdet for pivoten

7. Lag en pivotbuffer og en pivottabell

En pivotbuffer holder pivottabellen; derfor må du opprette en cache før du oppretter en pivottabell. Du må bruke VBAs syntaksreferanser for å lage pivotbufferen i Pivot-arket.

Ved å referere til pivotbufferen må du lage en pivottabell. Som en del av pivottabellen kan du definere arket, cellereferansen og navnet på pivottabellen.

Sett PvtCache = ActiveWorkbook. PivotCaches. Opprett (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Celler (2, 2), Tabellnavn:="MUODEmoTable")
Sett PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSark. Celler (1, 1), Tabellnavn:="MUODEmoTable")

Hvor:

  • Active Workbook: Den gjeldende arbeidsboken der du har data- og pivot-arket.
  • PivotCaches. Skape: Standard syntaks for å lage en pivotbuffer.
  • Kildetype: Siden du har dataene i arbeidsboken, kan du definere dem som xlDatabase. Noen andre alternativer inkluderer xlKonsolidering, xlEkstern, eller xlPivottabell.
  • Kildedata: Du kan referere til forrige pivotområde som kildedata.
  • Lag pivottabell: Standardkommando for å lage pivottabellen.
  • Tabelldestinasjon: Du må spesifisere ark- og cellereferansene der du vil opprette pivoten.
  • Tabellnavn: Angi et pivottabellnavn.
  • Lag pivottabell: Standardkommando for å lage pivottabellen i pivotbufferen.

8. Sett inn rader, kolonner, filtre og verdier

Siden pivottabellen er klar, må du begynne å legge til parameterne i filtrene, radene, kolonnene og aggregeringsverdiene. Du kan bruke VBA pivotfelter kommando for å begynne å deklarere detaljene.

Slik legger du til filterverdier:

Med ActiveSheet. Pivottabeller("MUODEmoTable").PivotFields("Region")
.Orientering = xlPageField
SluttMed

Slik legger du til radverdier:

Med ActiveSheet. Pivottabeller("MUODEmoTable").PivotFields("Underkategori")
.Orientering = xlRowField
SluttMed

Slik legger du til kolonneverdier:

Med ActiveSheet. Pivottabeller("MUODEmoTable").PivotFields("Stat")
.Orientation = xlColumnField
SluttMed

Slik legger du til aggregasjonsverdier:

Med ActiveSheet. Pivottabeller("MUODEmoTable").PivotFields("Salg")
.Orientation = xlDataField
.Funksjon = xlSum
SluttMed

Det er viktig å merke seg at du må referere til det aktive arket (pivotark), etterfulgt av pivottabellnavnet og variabelnavnet. Når du trenger å legge til filteret(e), rad(er) og kolonne(r), kan du veksle mellom ulike syntakser, som inkluderer følgende:

  • xlPageField: For å legge til filtre.
  • xlRowField: For å legge til rader.
  • xlRowField: For å legge til kolonner.

Til slutt kan du bruke xlDataField kommando for å beregne verdiaggregeringene. Du kan bruke andre aggregerte funksjoner som xlSum, xlAverage, xlCount, xlMax, xlMin og xlProduct.

9. Kjøre Excel VBA-koden for å lage automatiske pivoter

Til slutt, når hele programmet er klart, kan du kjøre det ved å trykke F5 eller klikke på spille knapp. Når du går tilbake til Pivot-arket i arbeidsboken din, vil du se at en ny pivottabell er klar for gjennomgang.

Hvis du vil se en trinnvis utførelse av hvordan kodekommandoen utspiller seg linje for linje, kan du navigere til kodeeditoren og trykke på F8 flere ganger. På denne måten kan du se hvordan hver linje med kode fungerer og hvordan VBA oppretter pivotene dine automatisk.

Lære å kode pivottabeller automatisk

Pivoter er ikke begrenset til kun MS Excel. Programmeringsspråk som Python lar deg lage optimaliserte pivoter med bare noen få linjer med kode.

Dataoptimalisering kan ikke være enklere enn dette. Du kan effektivt velge og velge kommandoene dine i Python og oppnå en lignende Excel-lignende pivotstruktur med letthet.