Tabelele pivot din Excel sunt esențiale pentru a face datele mai ușor de înțeles și de înțeles. Un tabel pivot poate condensa și strânge datele în structuri semnificative. Utilizatorii MS Excel le-au adoptat pe scară largă în industria datelor.

Știați că vă puteți automatiza tabelele pivot în Excel și le puteți crea cu un singur clic? MS Excel se integrează bine cu VBA și a devenit un instrument excelent pentru automatizarea sarcinilor repetitive.

Iată cum puteți automatiza un tabel pivot cu o macrocomandă în MS Excel VBA.

Utilizați un set de date de practică

Puteți descărca și utiliza un manechin setul de date din Tableau pentru a urma scriptul VBA din acest ghid. Codul VBA va funcționa cu orice alt set de date, cu câteva modificări de bază. Înainte de a începe, asigurați-vă că aveți macrocomenzi activate în registrul de lucru Excel.

Există câteva coloane esențiale pe care le puteți utiliza în tabelul pivot. Pentru a înțelege nuanțele tabelului și structura finală, puteți creați manual un tabel pivot de bază cu urmatoarele elemente:

instagram viewer
  • Filtru: Regiune
  • Rânduri: Subcategorie
  • Coloane: Stat
  • Valori: Vânzări

Pivotul final ar trebui să arate după cum urmează:

Cu toate acestea, puteți lăsa VBA să o facă automat, în loc să o pregătească manual.

Cum se creează automat tabele pivot în Excel

Pentru a automatiza tabelele pivot cu VBA, deschideți un nou fișier Excel și redenumiți foile după cum urmează:

  • Prima foaie: Macro
  • A doua foaie: Date

The Macro foaia conține macroscriptul, în timp ce Date fișa conține datele dvs. Pe foaia cu macrocomenzi, puteți insera orice formă la alegere și îi puteți atribui macrocomanda. Faceți clic dreapta pe formă și faceți clic pe Atribuire macrocomandă.

În următoarea casetă de dialog, faceți clic pe numele macrocomenzii și faceți clic pe Ok. Acest pas atribuie macro-ul formei.

1. Deschideți Editorul de codare Excel VBA

presa Alt + F11 pentru a deschide editorul de cod. Odată ce vă aflați în editorul de cod, faceți clic dreapta pe numele fișierului, urmat de Introduce și Modul. Este important să rețineți că veți scrie tot codul VBA într-un modul înainte de a-l executa.

Este o practică bună să utilizați un nume de modul care rezonează cu scopul codului. Deoarece aceasta este o demonstrație, puteți defini numele modulului după cum urmează:

sub pivot_demo()

Numele modulului se termină cu End Sub, care este comanda finală a unui modul:

Sfârşit Sub

2. Declararea variabilelor

În cadrul modulului, începeți prin a declara variabile pentru a stoca niște valori definite de utilizator pe care le veți folosi în script. Puteți folosi Dim declarație pentru a declara variabile, după cum urmează:

Dim PSsheet La fel de Foaie de lucru, DSsheet La fel de Fisa de lucru
Dim PvtCache La fel de PivotCache
Dim PvtTable La fel de Masă rotativă
Dim PvtRange La fel de Gamă
Dim Last_Row La fel de Long, Last_Col La fel de Lung
Dim sht1 la fel de Variantă

Veți folosi aceste variabile pentru următoarele:

  • PSsheet: Foaia de destinație, unde VBA va crea un pivot.
  • DSsheet: Fișa de date.
  • PvtCache: Un cache pivot ține pivotul.
  • PvtTable: Obiectul tabel pivot.
  • PvtRange: Un interval de date pentru pivot.
  • Last_Row și Last_Col: Ultimul rând și coloană populate din foaia de date (DSheet).
  • Sht1: Această variabilă este o variantă.

3. Suprimați avertismentele și mesajele

Erorile, avertismentele și mesajele inutile vă încetinesc codurile VBA. Suprimând astfel de mesaje, puteți accelera considerabil procesul.

Utilizați următorul cod:

Pe Eroare Reluați Următorul

Cu Aplicație
.DisplayAlerts = Fals
.ScreenUpdating = Fals
SfârşitCu

Unde:

  • La eroare Reluare Următorul: Această clauză suprimă orice erori de rulare.
  • Aplicație: Aplicația se referă la MS Excel.
  • Display Alerts: Proprietatea DisplayAlerts definește dacă se vor afișa alerte.
  • Actualizare ecran: Această proprietate definește dacă se actualizează modificările în timp real sau numai după ce codul s-a terminat de rulat.

Când rulează acest cod, suprimă toate alertele, avertismentele și mesajele pe care Excel le-ar afișa altfel. Puteți dezactiva parametrii DisplayAlerts și ScreenUpdating setându-le valorile la Fals.

Spre sfârșitul codului, le puteți activa din nou setând valoarea ca Adevărat.

4. Ștergeți toate foile pivot existente

Pentru a crea un nou tabel pivot, aveți două opțiuni. În primul rând, ștergeți foaia pivot existentă și utilizați VBA pentru a crea o foaie nouă pentru a stoca pivotul. Alternativ, puteți utiliza o foaie de lucru existentă pentru a menține pivotul.

În acest ghid, să creăm o nouă foaie pivot pentru a stoca tabelul pivot.

The pentru fiecare bucla parcurge fiecare foaie din registrul de lucru și stochează numele foii în sht1 variabil. Puteți folosi orice nume de variabilă (sht1) pentru a păstra numele foii. Bucla circulă prin fiecare foaie din registrul de lucru curent, căutând una cu numele specific (Pivot).

Când numele foii se potrivește, acesta șterge foaia și trece la foaia următoare. Odată ce codul verifică toate foile, iese din buclă și trece la următoarea parte a codului, care adaugă o nouă foaie, Pivot.

Iată cum o poți face:

PentruFiecaresht1ÎnActiveWorkbook.Fise de lucru
Dacă sht1.Nume = "Pivot" Apoi
sht1.Șterge
SfârşitDacă
Următorul sht1

Fișe de lucru. Adăuga. Nume = "Pivot"

5. Definiți sursa de date și foile pivot

Este esențial să creați variabile pentru a stoca referințele Pivot și ale foilor de date. Acestea funcționează ca comenzi rapide, pe care le puteți face referire în restul codului.

Set PSheet = Foi de lucru("Pivot")
Set DSheet = Foi de lucru("Date")

6. Identificați ultimul rând și coloana utilizate

Această parte a codului funcționează dinamic, deoarece mărește ultimul rând și coloană populat din date.

Last_Row = DSsheet. Celule (Rânduri. Count, 1).End (xlUp).Row
Last_Col = DSsheet. Celule (1, Coloane. Count).End (xlToLeft).Column
A stabilit PvtRange = DSsheet. celule(1, 1).Redimensionare (Last_Row, Last_Col)

Unde:

  • Ultimul rând: Variabilă pentru a stoca ultimul număr de rând populat, adică 9995
  • Ultima_Col: Variabilă pentru a stoca ultimul număr de coloană populat, adică 21
  • PvtRange: PvtRange face referire la întregul interval de date pentru pivot

7. Creați un cache pivot și un tabel pivot

Un cache pivot deține tabelul pivot; prin urmare, trebuie să creați un cache înainte de a crea un tabel pivot. Trebuie să utilizați referințele de sintaxă VBA pentru a face cache-ul pivot în foaia Pivot.

Făcând referire la cache-ul pivot, trebuie să creați un tabel pivot. Ca parte a tabelului pivot, puteți defini foaia, referința celulei și numele tabelului pivot.

Setați PvtCache = ActiveWorkbook. PivotCaches. Creați (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Celule (2, 2), TableName:="MUODemoTable")
Setați PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Celule (1, 1), TableName:="MUODemoTable")

Unde:

  • ActiveWorkbook: Registrul de lucru curent în care aveți foaia de date și pivot.
  • PivotCaches. Crea: Sintaxă implicită pentru a crea un cache pivot.
  • SourceType: Deoarece aveți datele în registrul de lucru, le puteți defini ca xlBaza de date. Alte opțiuni includ xlConsolidarea, xlExtern, sau xlPivotTable.
  • Date sursă: Puteți face referire la intervalul pivot anterior ca date sursă.
  • Creați un tabel pivot: Comanda implicită pentru a crea tabelul pivot.
  • Destinație tabel: Trebuie să specificați referințele pentru foaia și celula în care doriți să creați pivotul.
  • TableName: Specificați un nume de tabel pivot.
  • Creați un tabel pivot: Comanda implicită pentru a crea tabelul pivot în memoria cache pivot.

8. Inserați rânduri, coloane, filtre și valori

Deoarece tabelul pivot este gata, trebuie să începeți să adăugați parametrii în filtre, rânduri, coloane și valori de agregare. Puteți folosi VBA câmpuri pivot comanda pentru a începe declararea detaliilor.

Pentru a adăuga valori de filtru:

Cu ActiveSheet. Tabele pivot("MUODemoTable").PivotFields("Regiune")
.Orientare = xlPageField
SfârşitCu

Pentru a adăuga valori de rând:

Cu ActiveSheet. Tabele pivot("MUODemoTable").PivotFields("Subcategorie")
.Orientare = xlRowField
SfârşitCu

Pentru a adăuga valori pentru coloane:

Cu ActiveSheet. Tabele pivot("MUODemoTable").PivotFields("Stat")
.Orientare = xlColumnField
SfârşitCu

Pentru a adăuga valori de agregare:

Cu ActiveSheet. Tabele pivot("MUODemoTable").PivotFields("Vânzări")
.Orientare = xlDataField
.Funcţie = xlSuma
SfârşitCu

Este esențial să rețineți că trebuie să faceți referire la foaia activă (foaia pivot), urmată de numele tabelului pivot și numele variabilei. Când trebuie să adăugați filtrul(ele), rândul(e) și coloana(e), puteți comuta între diverse sintaxe, care includ următoarele:

  • xlPageField: Pentru a adăuga filtre.
  • xlRowField: Pentru a adăuga rânduri.
  • xlRowField: Pentru a adăuga coloane.

În cele din urmă, puteți utiliza xlDataField comanda pentru a calcula agregarea valorii. Puteți utiliza alte funcții agregate, cum ar fi xlSum, xlAverage, xlCount, xlMax, xlMin și xlProduct.

9. Rularea codului Excel VBA pentru a crea pivoturi automate

În cele din urmă, când întregul program este gata, îl puteți rula apăsând F5 sau făcând clic pe Joaca buton. Când reveniți la foaia Pivot din registrul de lucru, veți vedea că un nou tabel pivot este gata pentru a fi examinat.

Dacă doriți să vedeți o execuție pas cu pas a modului în care comanda codului este redată linie cu linie, puteți naviga la editorul de cod și apăsați F8 de cateva ori. În acest fel, puteți vedea cum funcționează fiecare linie de cod și cum VBA vă creează pivoturile automat.

Învățați să codificați automat tabelele pivot

Pivoturile nu sunt limitate doar la MS Excel. Limbajele de programare precum Python vă permit să creați pivoti optimizați cu doar câteva linii de cod.

Optimizarea datelor nu poate fi mai ușoară decât asta. Puteți alege în mod eficient comenzile în Python și puteți realiza cu ușurință o structură pivot similară Excel.