Kontingenčné tabuľky v Exceli sú kľúčové pri uľahčovaní pochopenia a pochopenia údajov. Kontingenčná tabuľka môže zhustiť a zhrnúť údaje do zmysluplných štruktúr. Používatelia MS Excel si ich v dátovom priemysle široko osvojili.

Vedeli ste, že kontingenčné tabuľky môžete automatizovať v Exceli a vytvárať ich jediným kliknutím? MS Excel sa dobre integruje s VBA a stal sa vynikajúcim nástrojom na automatizáciu opakujúcich sa úloh.

Tu je návod, ako môžete automatizovať kontingenčnú tabuľku pomocou makra v MS Excel VBA.

Použite súbor praktických údajov

Môžete si stiahnuť a použiť figurínu súbor údajov z Tableau postupujte podľa skriptu VBA v tejto príručke. Kód VBA bude fungovať s akýmkoľvek iným súborom údajov s niekoľkými základnými vylepšeniami. Pred začatím sa uistite, že máte povolené makrá v zošite programu Excel.

V kontingenčnej tabuľke môžete použiť niekoľko základných stĺpcov. Aby ste pochopili nuansy a konečnú štruktúru tabuľky, môžete manuálne vytvorte základnú kontingenčnú tabuľku s nasledujúcimi prvkami:

instagram viewer
  • Filter: región
  • Riadky: Podkategória
  • Stĺpce: Štát
  • Hodnoty: Predaj

Koncový čap by mal vyzerať takto:

Môžete však nechať VBA, aby to urobilo automaticky, namiesto toho, aby ste to pripravovali ručne.

Ako automaticky vytvárať kontingenčné tabuľky v Exceli

Ak chcete automatizovať svoje kontingenčné tabuľky pomocou jazyka VBA, otvorte nový súbor Excel a premenujte hárky takto:

  • Prvý list: Makro
  • Druhý list: Údaje

The Makro list obsahuje makro skript, zatiaľ čo Údaje hárok obsahuje vaše údaje. Na list makier môžete vložiť ľubovoľný tvar podľa vlastného výberu a priradiť mu makro. Kliknite pravým tlačidlom myši na tvar a kliknite na položku Priradiť makro.

V nasledujúcom dialógovom okne kliknite na názov makra a kliknite na tlačidlo OK. Tento krok priradí makro k tvaru.

1. Otvorte editor kódovania Excel VBA

Stlačte tlačidlo Alt + F11 otvorte editor kódu. Keď ste v editore kódu, kliknite pravým tlačidlom myši na názov súboru a potom Vložiť a modul. Je dôležité si zapamätať, že celý kód VBA napíšete do modulu pred jeho spustením.

Je dobrým zvykom použiť názov modulu, ktorý rezonuje s účelom kódu. Keďže ide o ukážku, názov modulu môžete definovať takto:

sub pivot_demo()

Názov modulu končí na End Sub, čo je koncový príkaz modulu:

Koniec Sub

2. Deklarovať premenné

V rámci modulu začnite deklarovaním premenných na uloženie niektorých používateľom definovaných hodnôt, ktoré použijete v skripte. Môžete použiť Dim príkaz na deklarovanie premenných takto:

Dim PSsheet Ako Pracovný list, DSsheet Ako Pracovný list
Dim PvtCache Ako PivotCache
Dim PvtTable Ako Kontingenčná tabuľka
Dim PvtRange Ako Rozsah
Dim Last_Row Ako Long, Last_Col Ako Dlhé
Dim sht1 ako Varianta

Tieto premenné budete používať na nasledujúce účely:

  • PSsheet: Cieľový hárok, kde VBA vytvorí pivot.
  • DSsheet: Údajový list.
  • PvtCache: Pivotná vyrovnávacia pamäť obsahuje pivot.
  • PvtTable: Objekt kontingenčnej tabuľky.
  • PvtRange: Rozsah údajov pre pivot.
  • Last_Row a Last_Col: Posledný vyplnený riadok a stĺpec v údajovom hárku (DSheet).
  • Sht1: Táto premenná je variant.

3. Potlačiť upozornenia a správy

Zbytočné chyby, upozornenia a správy spomaľujú vaše kódy VBA. Potlačením takýchto správ môžete proces značne urýchliť.

Použite nasledujúci kód:

Zapnuté Chyba Pokračovať ďalej

s Aplikácia
.DisplayAlerts = Nepravdivé
.ScreenUpdating = Nepravdivé
Koniecs

Kde:

  • Pri chybe pokračovať ďalej: Táto klauzula potláča všetky chyby spustenia.
  • Aplikácia: Aplikácia odkazuje na MS Excel.
  • DisplayAlerts: Vlastnosť DisplayAlerts definuje, či sa majú zobrazovať upozornenia.
  • Aktualizácia obrazovky: Táto vlastnosť definuje, či sa majú aktualizovať zmeny v reálnom čase alebo až po dokončení spustenia kódu.

Keď sa tento kód spustí, potlačí všetky výstrahy, varovania a správy, ktoré by Excel zobrazil inak. Parametre DisplayAlerts a ScreenUpdating môžete vypnúť nastavením ich hodnôt na Nepravdivé.

Ku koncu kódu ich môžete znova zapnúť nastavením hodnoty ako Pravda.

4. Odstrániť všetky existujúce kontingenčné hárky

Ak chcete vytvoriť novú kontingenčnú tabuľku, máte dve možnosti. Najprv odstráňte existujúci kontingenčný hárok a použite VBA na vytvorenie nového hárku na uloženie kontingenčného listu. Prípadne môžete použiť existujúci pracovný hárok na podržanie pivota.

V tejto príručke vytvoríme nový kontingenčný hárok na uloženie kontingenčnej tabuľky.

The pre každý slučka cyklicky prechádza každým hárkom v zošite a ukladá názov hárku do súboru sht1 premenlivý. Na uloženie názvu listu môžete použiť ľubovoľný názov premennej (sht1). Cyklus prechádza každým hárkom v aktuálnom zošite a hľadá hárok s konkrétnym názvom (Pivot).

Keď sa názov hárka zhoduje, hárok sa odstráni a presunie sa na ďalší hárok. Keď kód skontroluje všetky hárky, opustí cyklus a presunie sa na ďalšiu časť kódu, ktorá pridá nový hárok, Pivot.

Môžete to urobiť takto:

PreKaždýsht1InAktívny zošit.Listy
Ak sht1.Name = "Pivot" Potom
sht1.Vymazať
KoniecAk
Ďalší sht1

Listy. Pridať. Meno = "Pivot"

5. Definujte zdroj údajov a kontingenčné hárky

Je nevyhnutné vytvoriť premenné na ukladanie odkazov na kontingenčné a dátové hárky. Tieto fungujú ako skratky, na ktoré môžete odkazovať vo zvyšku kódu.

Nastaviť PSheet = Worksheets("Pivot")
Nastaviť DSheet = Worksheets("Údaje")

6. Identifikujte posledný použitý riadok a stĺpec

Táto časť kódu funguje dynamicky, pretože zväčšuje posledný vyplnený riadok a stĺpec v rámci údajov.

Last_Row = DSheet. Bunky (riadky. Počet, 1).Koniec (xlUp).Riadok
Last_Col = DSheet. Bunky (1, stĺpce. Count).End (xlToLeft).Stĺpec
Set PvtRange = DSheet. Bunky(1, 1).Zmeniť veľkosť (Posledný_riadok, Posledný_Stĺpec)

Kde:

  • Last_Row: Premenná na uloženie posledného vyplneného čísla riadku, t. j. 9995
  • Last_Col: Premenná na uloženie posledného vyplneného čísla stĺpca, t.j. 21
  • PvtRange: PvtRange odkazuje na celý rozsah údajov pre pivot

7. Vytvorte kontingenčnú vyrovnávaciu pamäť a kontingenčnú tabuľku

Kontingenčná vyrovnávacia pamäť obsahuje kontingenčnú tabuľku; preto musíte pred vytvorením kontingenčnej tabuľky vytvoriť vyrovnávaciu pamäť. Na vytvorenie vyrovnávacej pamäte pivot v kontingenčnom hárku musíte použiť odkazy na syntax VBA.

Odkazovaním na kontingenčnú vyrovnávaciu pamäť musíte vytvoriť kontingenčnú tabuľku. Ako súčasť kontingenčnej tabuľky môžete definovať hárok, odkaz na bunku a názov kontingenčnej tabuľky.

Nastavte PvtCache = ActiveWorkbook. PivotCache. Vytvorte (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableCieľ:=PSheet. Bunky (2, 2), TableName:="Tabuľka MUODemoTable")
Nastavte PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Bunky (1, 1), TableName:="Tabuľka MUODemoTable")

Kde:

  • Aktívny zošit: Aktuálny zošit, v ktorom máte údaje a kontingenčný hárok.
  • PivotCache. Vytvoriť: Predvolená syntax na vytvorenie pivotovej vyrovnávacej pamäte.
  • Typ zdroja: Keďže máte údaje v zošite, môžete ich definovať ako xlDatabáza. Niektoré ďalšie možnosti zahŕňajú xlKonsolidácia, xlExternal, alebo xlPivotTable.
  • Zdrojové údaje: Ako zdrojové údaje môžete odkazovať na predchádzajúci rozsah pivot.
  • Vytvorenie kontingenčnej tabuľky: Predvolený príkaz na vytvorenie kontingenčnej tabuľky.
  • TableDestination: Musíte zadať odkazy na hárok a bunky, kde chcete vytvoriť pivot.
  • TableName: Zadajte názov kontingenčnej tabuľky.
  • Vytvorenie kontingenčnej tabuľky: Predvolený príkaz na vytvorenie kontingenčnej tabuľky v kontingenčnej vyrovnávacej pamäti.

8. Vložte riadky, stĺpce, filtre a hodnoty

Keďže je kontingenčná tabuľka pripravená, musíte začať pridávať parametre v rámci filtrov, riadkov, stĺpcov a agregačných hodnôt. Môžete použiť VBA pivotfields príkaz začať deklarovať podrobnosti.

Ak chcete pridať hodnoty filtra:

S ActiveSheet. kontingenčné tabuľky("Tabuľka MUODemoTable").PivotFields("región")
.Orientácia = xlPageField
Koniecs

Pridanie hodnôt riadkov:

S ActiveSheet. kontingenčné tabuľky("Tabuľka MUODemoTable").PivotFields("Podkategória")
.Orientácia = xlRowField
Koniecs

Ak chcete pridať hodnoty stĺpca:

S ActiveSheet. kontingenčné tabuľky("Tabuľka MUODemoTable").PivotFields("Štát")
.Orientácia = xlColumnField
Koniecs

Ak chcete pridať agregačné hodnoty:

S ActiveSheet. kontingenčné tabuľky("Tabuľka MUODemoTable").PivotFields("Predaj")
.Orientácia = xlDataField
.Funkcia = xlSum
Koniecs

Je dôležité poznamenať, že musíte odkazovať na aktívny hárok (kontingenčný hárok), za ktorým nasleduje názov kontingenčnej tabuľky a názov premennej. Keď potrebujete pridať filter (filtre), riadok (riadky) a stĺpec (stĺpce), môžete prepínať medzi rôznymi syntaxami, ktoré zahŕňajú nasledujúce:

  • xlPageField: Ak chcete pridať filtre.
  • xlRowField: Ak chcete pridať riadky.
  • xlRowField: Ak chcete pridať stĺpce.

Nakoniec môžete použiť xlDataField príkaz na výpočet agregácií hodnôt. Môžete použiť ďalšie agregačné funkcie ako xlSum, xlAverage, xlCount, xlMax, xlMin a xlProduct.

9. Spustenie kódu Excel VBA na vytváranie automatických pivotov

Nakoniec, keď je celý program pripravený, môžete ho spustiť stlačením F5 alebo kliknutím na hrať tlačidlo. Keď sa vrátite na kontingenčný hárok v zošite, uvidíte, že je pripravená nová kontingenčná tabuľka, ktorú si môžete prezrieť.

Ak chcete vidieť postupné spustenie príkazu kódu riadok po riadku, môžete prejsť do editora kódu a stlačiť F8 niekoľko krát. Týmto spôsobom môžete vidieť, ako funguje každý riadok kódu a ako VBA automaticky vytvára vaše pivoty.

Naučte sa automaticky kódovať kontingenčné tabuľky

Pivoty nie sú obmedzené len na MS Excel. Programovacie jazyky ako Python vám umožňujú vytvárať optimalizované pivoty pomocou niekoľkých riadkov kódu.

Optimalizácia údajov nemôže byť jednoduchšia ako toto. Môžete efektívne vyberať a vyberať svoje príkazy v Pythone a ľahko dosiahnuť podobnú štruktúru pivot ako Excel.