Zaokretne tablice u Excelu ključne su za lakše razumijevanje i razumijevanje podataka. Zaokretna tablica može kondenzirati i zgnječiti podatke u smislene strukture. Korisnici MS Excela široko su ih usvojili u podatkovnoj industriji.

Jeste li znali da možete automatizirati svoje zaokretne tablice u Excelu i izraditi ih jednim klikom? MS Excel dobro se integrira s VBA i postao je izvrstan alat za automatizaciju zadataka koji se ponavljaju.

Evo kako možete automatizirati zaokretnu tablicu pomoću makronaredbe u MS Excel VBA.

Koristite skup podataka za vježbu

Možete preuzeti i koristiti lutku skup podataka iz Tableaua slijedite VBA skriptu u ovom vodiču. VBA kod će raditi s bilo kojim drugim skupom podataka, uz nekoliko osnovnih podešavanja. Prije početka, provjerite jeste li omogućene makronaredbe unutar vaše Excel radne knjige.

Postoji nekoliko bitnih stupaca koje možete koristiti unutar zaokretne tablice. Da biste razumjeli nijanse i konačnu strukturu tablice, možete ručno kreirajte osnovnu stožernu tablicu sa sljedećim elementima:

instagram viewer
  • Filtar: Regija
  • Redovi: Potkategorija
  • Stupci: država
  • Vrijednosti: Prodajni

Krajnji stožer trebao bi izgledati ovako:

Međutim, možete dopustiti da VBA to učini automatski umjesto da ga pripremate ručno.

Kako automatski stvoriti zaokretne tablice u Excelu

Da biste automatizirali svoje zaokretne tablice pomoću VBA, otvorite novu Excel datoteku i preimenujte listove na sljedeći način:

  • Prvi list: Makro
  • Drugi list: Podaci

The Makro list sadrži makro skriptu, dok Podaci list sadrži vaše podatke. Na listu makronaredbi možete umetnuti bilo koji oblik po svom izboru i dodijeliti mu makronaredbu. Desnom tipkom miša kliknite oblik i kliknite Dodijeli makro.

U sljedećem dijaloškom okviru kliknite naziv svoje makronaredbe i kliknite U redu. Ovaj korak dodjeljuje makronaredbu obliku.

1. Otvorite Excel VBA uređivač kodiranja

Pritisnite Alt + F11 za otvaranje uređivača koda. Kada ste u uređivaču koda, desnom tipkom miša kliknite naziv datoteke, a zatim Umetnuti i Modul. Važno je zapamtiti da ćete sav VBA kod unutar modula napisati prije nego što ga izvršite.

Dobro je koristiti naziv modula koji odgovara svrsi koda. Budući da je ovo demonstracija, naziv modula možete definirati na sljedeći način:

sub pivot_demo()

Naziv modula završava s End Sub, što je završna naredba modula:

Kraj Pod

2. Deklarirajte varijable

Unutar modula započnite s deklariranjem varijabli za pohranu nekih korisnički definiranih vrijednosti koje ćete koristiti u skripti. Možete koristiti Dim naredba za deklariranje varijabli, kako slijedi:

Dim PSsheet Kao Radni list, Dsheet Kao Radni list
Dim PvtCache Kao PivotCache
Dim PvtTable Kao Zaokretna tablica
Dim PvtRange Kao Raspon
Zatamni zadnji red Kao Dugo, Zadnja_kol Kao dugo
Dim sht1 kao Varijanta

Ove ćete varijable koristiti za sljedeće:

  • Psheet: Odredišni list, gdje će VBA stvoriti stožer.
  • Dsheet: List s podacima.
  • PvtCache: Pivot predmemorija drži stožer.
  • PvtTable: Objekt zaokretne tablice.
  • PvtRange: Raspon podataka za pivot.
  • Zadnji_redak i zadnji_stupac: Zadnji popunjeni redak i stupac unutar podatkovne tablice (DSheet).
  • Sht1: Ova varijabla je varijanta.

3. Potiskivanje upozorenja i poruka

Nepotrebne pogreške, upozorenja i poruke usporavaju vaše VBA kodove. Potiskivanjem takvih poruka možete znatno ubrzati proces.

Koristite sljedeći kôd:

Na Greška Nastavi dalje

S Primjena
.DisplayAlerts = lažno
.ScreenUpdating = lažno
KrajS

Gdje:

  • Pri pogrešci Nastavi dalje: Ova klauzula potiskuje sve pogreške tijekom izvođenja.
  • Primjena: Aplikacija se odnosi na MS Excel.
  • DisplayAlerts: Svojstvo DisplayAlerts definira hoće li se prikazivati ​​upozorenja.
  • Ažuriranje zaslona: Ovo svojstvo definira hoće li se promjene ažurirati u stvarnom vremenu ili tek nakon završetka koda.

Kada se ovaj kôd pokrene, on potiskuje sva upozorenja, upozorenja i poruke koje bi Excel inače prikazao. Parametre DisplayAlerts i ScreenUpdating možete isključiti postavljanjem njihovih vrijednosti na lažno.

Pred kraj koda, možete ih ponovno uključiti postavljanjem vrijednosti kao Pravi.

4. Izbrišite sve postojeće zaokretne listove

Za izradu nove zaokretne tablice imate dvije mogućnosti. Prvo izbrišite postojeći zaokretni list i upotrijebite VBA za stvaranje novog zaokretnog lista za pohranu zaokretnog lista. Alternativno, možete koristiti postojeći radni list za držanje zakretanja.

U ovom vodiču stvorimo novi zaokretni list za pohranjivanje zaokretne tablice.

The za svakoga petlja kruži kroz svaki list unutar radne knjige i pohranjuje naziv lista unutar sht1 varijabla. Možete koristiti bilo koji naziv varijable (sht1) za držanje naziva lista. Petlja kruži kroz svaki list unutar trenutne radne knjige, tražeći onaj s određenim nazivom (Stožer).

Kada se naziv lista podudara, briše se list i prelazi na sljedeći list. Nakon što kod provjeri sve listove, izlazi iz petlje i prelazi na sljedeći dio koda, koji dodaje novi list, Stožer.

Evo kako to možete učiniti:

ZaSvakisht1UActiveWorkbook.Radni listovi
Ako je sht1.Ime = "Stožer" Zatim
sht1.Izbrisati
KrajAko
Sljedeći st1

Radni listovi. Dodati. Ime = "Stožer"

5. Definirajte izvor podataka i zaokretne listove

Bitno je stvoriti varijable za pohranjivanje referenci zaokretnih i podatkovnih listova. Oni rade kao prečaci, na koje se možete pozivati ​​u ostatku koda.

Postavite PSheet = Radni listovi("Stožer")
Postavi DSheet = Radni listovi("Podaci")

6. Identificirajte posljednji korišteni redak i stupac

Ovaj dio koda radi dinamički jer povećava zadnji popunjeni redak i stupac unutar podataka.

Zadnji_redak = DSheet. Ćelije (redovi. Broji, 1).Kraj (xlUp).Red
Zadnji_kol = DSheet. Ćelije (1, stupci. Count).End (xlToLeft).Column
set PvtRaspon = DSheet. Stanice(1, 1).Promjena veličine (Zadnji_redak, Zadnji_stupac)

Gdje:

  • Zadnji_redak: Varijabla za pohranu zadnjeg popunjenog broja retka, tj. 9995
  • Zadnja_kolona: Varijabla za pohranu zadnjeg popunjenog broja stupca, tj. 21
  • PvtRange: PvtRange upućuje na cijeli raspon podataka za pivot

7. Napravite Pivot Cache i Pivot Table

Zaokretna predmemorija sadrži zaokretnu tablicu; stoga morate izraditi predmemoriju prije izrade zaokretne tablice. Morate koristiti reference VBA sintakse da biste napravili zaokretnu predmemoriju unutar zaokretnog lista.

Referenciranjem zaokretne predmemorije morate stvoriti zaokretnu tablicu. Kao dio zaokretne tablice možete definirati list, referencu ćelije i naziv zaokretne tablice.

Postavite PvtCache = ActiveWorkbook. PivotCaches. Stvori (SourceType:=xlDatabase, SourceData:=PvtRange).Stvori zaokretnu tablicu (TableDestination:=PSheet. Ćelije (2, 2), TableName:="MUODemoTablica")
Postavite PvtTable = PvtCache. Stvori zaokretnu tablicu (TableDestination:=PShet. Ćelije (1, 1), TableName:="MUODemoTablica")

Gdje:

  • ActiveWorkbook: Trenutna radna knjiga u kojoj imate podatkovni i zaokretni list.
  • PivotCaches. Stvoriti: Zadana sintaksa za stvaranje pivot predmemorije.
  • Vrsta izvora: Budući da imate podatke unutar radne knjige, možete ih definirati kao xlBaza podataka. Neke druge opcije uključuju xlKonsolidacija, xlVanjski, ili xlPivotTable.
  • Izvor podataka: Možete se pozvati na prethodni raspon zaokretanja kao na izvorne podatke.
  • Stvori zaokretnu tablicu: Zadana naredba za izradu zaokretne tablice.
  • Odredište stola: Morate navesti reference lista i ćelije na kojima želite stvoriti zaokret.
  • Naziv tablice: Navedite naziv zaokretne tablice.
  • Stvori zaokretnu tablicu: Zadana naredba za stvaranje zaokretne tablice unutar zaokretne predmemorije.

8. Umetnite retke, stupce, filtre i vrijednosti

Budući da je zaokretna tablica spremna, morate početi dodavati parametre unutar filtara, redaka, stupaca i vrijednosti združivanja. Možete koristiti VBA stožerna polja naredba za početak deklariranja detalja.

Za dodavanje vrijednosti filtra:

Uz ActiveSheet. zaokretne tablice ("MUODemoTablica").PivotFields("Regija")
.Orijentacija = xlPageField
KrajS

Za dodavanje vrijednosti retka:

Uz ActiveSheet. zaokretne tablice ("MUODemoTablica").PivotFields("Potkategorija")
.Orijentacija = xlRowField
KrajS

Za dodavanje vrijednosti stupaca:

Uz ActiveSheet. zaokretne tablice ("MUODemoTablica").PivotFields("država")
.Orijentacija = xlPoljeStupca
KrajS

Za dodavanje agregacijskih vrijednosti:

Uz ActiveSheet. zaokretne tablice ("MUODemoTablica").PivotFields("Prodajni")
.Orijentacija = xlDataField
.Funkcija = xlSum
KrajS

Bitno je napomenuti da morate referencirati aktivnu tablicu (zaokretnu tablicu), nakon koje slijedi naziv zaokretne tablice i naziv varijable. Kada trebate dodati filter(e), redak(ove) i stupac(ove), možete se prebacivati ​​između različitih sintaksa, što uključuje sljedeće:

  • xlPageField: Za dodavanje filtera.
  • xlRowField: Za dodavanje redaka.
  • xlRowField: Za dodavanje stupaca.

Konačno, možete koristiti xlDataField naredba za izračunavanje agregacija vrijednosti. Možete koristiti druge agregatne funkcije kao što su xlSum, xlAverage, xlCount, xlMax, xlMin i xlProduct.

9. Pokretanje Excel VBA koda za stvaranje automatskih zaokreta

Na kraju, kada je cijeli program spreman, možete ga pokrenuti pritiskom na F5 ili klikom na igra dugme. Kada se vratite na zaokretni list u radnoj knjizi, vidjet ćete da je nova zaokretna tablica spremna za pregled.

Ako želite vidjeti korak po korak izvršenje naredbe koda redak po redak, možete otići do uređivača koda i pritisnuti F8 nekoliko puta. Na taj način možete vidjeti kako radi svaka linija koda i kako VBA automatski stvara vaše zaokrete.

Učenje automatskog kodiranja zaokretnih tablica

Pivoti nisu ograničeni samo na MS Excel. Programski jezici poput Pythona omogućuju vam stvaranje optimiziranih zaokreta sa samo nekoliko redaka koda.

Optimizacija podataka ne može biti lakša od ovoga. Možete učinkovito birati svoje naredbe u Pythonu i s lakoćom ostvariti sličnu zaokretnu strukturu sličnu Excelu.