Kontingenční tabulky v Excelu jsou klíčové pro snadnější pochopení a pochopení dat. Kontingenční tabulka může zhušťovat a stlačovat data do smysluplných struktur. Uživatelé MS Excel je široce přijali v datovém průmyslu.
Věděli jste, že kontingenční tabulky v Excelu můžete automatizovat a vytvářet je jediným kliknutím? MS Excel se dobře integruje s VBA a stal se vynikajícím nástrojem pro automatizaci opakujících se úloh.
Zde je návod, jak můžete automatizovat kontingenční tabulku pomocí makra v MS Excel VBA.
Použijte soubor praktických dat
Můžete si stáhnout a použít figurínu datový soubor z Tableau postupujte podle skriptu VBA v této příručce. Kód VBA bude fungovat s jakoukoli jinou datovou sadou s několika základními úpravami. Než začnete, ujistěte se, že máte povolená makra v sešitu aplikace Excel.
V kontingenční tabulce můžete použít několik základních sloupců. Chcete-li pochopit nuance tabulky a konečnou strukturu, můžete vytvořit základní kontingenční tabulku ručně s následujícími prvky:
- Filtr: Kraj
- Řádky: Podkategorie
- Sloupce: Stát
- Hodnoty: Odbyt
Koncový čep by měl vypadat takto:
Můžete však nechat VBA, aby to udělal automaticky, místo abyste to připravovali ručně.
Jak automaticky vytvářet kontingenční tabulky v Excelu
Chcete-li automatizovat kontingenční tabulky pomocí VBA, otevřete nový soubor Excel a přejmenujte listy takto:
- První list: Makro
- Druhý list: Data
The Makro list obsahuje makro skript, zatímco Data list obsahuje vaše data. Na list maker můžete vložit libovolný tvar podle vlastního výběru a přiřadit mu makro. Klikněte pravým tlačítkem na tvar a klikněte na Přiřadit makro.
V následujícím dialogovém okně klikněte na název makra a klikněte na OK. Tento krok přiřadí makro k tvaru.
1. Otevřete editor kódování Excel VBA
lis Alt + F11 otevřete editor kódu. Jakmile jste v editoru kódu, klikněte pravým tlačítkem na název souboru a poté na Vložit a Modul. Je důležité si pamatovat, že veškerý kód VBA napíšete do modulu před jeho spuštěním.
Je dobrým zvykem používat název modulu, který rezonuje s účelem kódu. Protože se jedná o demo, můžete definovat název modulu následovně:
sub pivot_demo()
Název modulu končí na End Sub, což je koncový příkaz modulu:
Konec Sub
2. Deklarace proměnných
V rámci modulu začněte deklarováním proměnných pro uložení některých uživatelem definovaných hodnot, které použijete ve skriptu. Můžete použít Ztlumit příkaz k deklaraci proměnných takto:
Dim PSsheet Tak jako Pracovní list, DSsheet Tak jako Pracovní list
Dim PvtCache Tak jako PivotCache
Dim PvtTable Tak jako Kontingenční tabulka
Dim PvtRange Tak jako Rozsah
Dim Last_Row Tak jako Long, Last_Col Tak jako Dlouho
Dim sht1 tak jako Varianta
Tyto proměnné budete používat pro následující:
- PSlist: Cílový list, kde VBA vytvoří pivot.
- DSsheet: Datový list.
- PvtCache: Mezipaměť pivotů uchovává pivot.
- PvtTabulka: Objekt kontingenční tabulky.
- PvtRange: Rozsah dat pro pivot.
- Last_Row a Last_Col: Poslední vyplněný řádek a sloupec v datovém listu (DSheet).
- Sht1: Tato proměnná je variantou.
3. Potlačit varování a zprávy
Zbytečné chyby, varování a zprávy zpomalují vaše kódy VBA. Potlačením takových zpráv můžete proces značně urychlit.
Použijte následující kód:
Na Chyba Pokračovat dále
S aplikace
.DisplayAlerts = Nepravdivé
.ScreenUpdating = Nepravdivé
KonecS
Kde:
- Při chybě pokračovat dále: Tato klauzule potlačuje všechny chyby za běhu.
- Aplikace: Aplikace odkazuje na MS Excel.
- DisplayAlerts: Vlastnost DisplayAlerts definuje, zda se mají zobrazovat výstrahy.
- Aktualizace obrazovky: Tato vlastnost určuje, zda se mají změny aktualizovat v reálném čase nebo až po dokončení běhu kódu.
Když se tento kód spustí, potlačí všechna upozornění, varování a zprávy, které by Excel zobrazil jinak. Parametry DisplayAlerts a ScreenUpdating můžete vypnout nastavením jejich hodnot na Nepravdivé.
Ke konci kódu je můžete znovu zapnout nastavením hodnoty jako Skutečný.
4. Odstraňte všechny existující kontingenční listy
Chcete-li vytvořit novou kontingenční tabulku, máte dvě možnosti. Nejprve odstraňte existující kontingenční list a použijte VBA k vytvoření nového listu pro uložení kontingenčního listu. Alternativně můžete k držení pivotu použít existující list.
V této příručce vytvoříme nový kontingenční list pro uložení kontingenční tabulky.
The pro každého smyčka cyklicky prochází každý list v sešitu a ukládá název listu do sht1 variabilní. K uložení názvu listu můžete použít libovolný název proměnné (sht1). Cyklus prochází každý list v aktuálním sešitu a hledá jeden s konkrétním názvem (Pivot).
Když se název listu shoduje, list se odstraní a přesune se na další list. Jakmile kód zkontroluje všechny listy, opustí smyčku a přesune se na další část kódu, která přidá nový list, Pivot.
Můžete to udělat takto:
ProKaždýsht1vAktivní sešit.Pracovní listy
Pokud sht1.Name = "Pivot" Pak
sht1.Vymazat
KonecLi
Další sht1
Pracovní listy. Přidat. Jméno = "Pivot"
5. Definujte zdroj dat a kontingenční tabulky
Je nezbytné vytvořit proměnné pro uložení odkazů kontingenčních a datových listů. Tyto fungují jako zkratky, na které můžete odkazovat ve zbytku kódu.
Nastavit PSheet = Worksheets("Pivot")
Nastavit DSheet = Worksheets("Data")
6. Identifikujte naposledy použitý řádek a sloupec
Tato část kódu funguje dynamicky, protože zvětšuje poslední vyplněný řádek a sloupec v datech.
Last_Row = DSheet. Buňky (Řádky. Počet, 1).Konec (xlUp).Řádek
Last_Col = DSheet. Buňky (1, sloupce. Počet).Konec (xlToLeft).Sloupec
Soubor PvtRange = DSheet. Buňky(1, 1).Změnit velikost (Poslední_řádek, Poslední_sloupec)
Kde:
- Last_Row: Proměnná pro uložení posledního vyplněného čísla řádku, tj. 9995
- Last_Col: Proměnná pro uložení posledního vyplněného čísla sloupce, tj. 21
- PvtRange: PvtRange odkazuje na celý datový rozsah pro pivot
7. Vytvořte kontingenční mezipaměť a kontingenční tabulku
Kontingenční mezipaměť obsahuje kontingenční tabulku; proto je třeba před vytvořením kontingenční tabulky vytvořit mezipaměť. K vytvoření mezipaměti pivotů v kontingenčním listu musíte použít odkazy na syntaxi jazyka VBA.
Odkazováním na kontingenční mezipaměť musíte vytvořit kontingenční tabulku. Jako součást kontingenční tabulky můžete definovat list, odkaz na buňku a název kontingenční tabulky.
Nastavte PvtCache = ActiveWorkbook. PivotCache. Vytvořte (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Buňky (2, 2), TableName:="Tabulka MUODemoTable")
Nastavit PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Buňky (1, 1), TableName:="Tabulka MUODemoTable")
Kde:
- Aktivní sešit: Aktuální sešit, ve kterém máte list Data a kontingenční list.
- PivotCache. Vytvořit: Výchozí syntaxe pro vytvoření mezipaměti pivotů.
- Typ zdroje: Protože máte data v sešitu, můžete je definovat jako xlDatabáze. Některé další možnosti zahrnují xlKonsolidace, xlExternínebo xlPivotTable.
- Zdrojová data: Jako zdrojová data můžete odkazovat na předchozí rozsah pivotů.
- Vytvořit kontingenční tabulku: Výchozí příkaz pro vytvoření kontingenční tabulky.
- TableDestination: Musíte zadat odkazy na list a buňku, kde chcete vytvořit pivot.
- Název tabulky: Zadejte název kontingenční tabulky.
- Vytvořit kontingenční tabulku: Výchozí příkaz pro vytvoření kontingenční tabulky v kontingenční mezipaměti.
8. Vložit řádky, sloupce, filtry a hodnoty
Protože je kontingenční tabulka připravena, musíte začít přidávat parametry do filtrů, řádků, sloupců a agregačních hodnot. Můžete použít VBA pivotfields příkaz k zahájení deklarování podrobností.
Chcete-li přidat hodnoty filtru:
S ActiveSheet. kontingenční tabulky ("Tabulka MUODemoTable").PivotFields("Kraj")
.Orientation = xlPageField
KonecS
Chcete-li přidat hodnoty řádků:
S ActiveSheet. kontingenční tabulky ("Tabulka MUODemoTable").PivotFields("Podkategorie")
.Orientation = xlRowField
KonecS
Chcete-li přidat hodnoty sloupců:
S ActiveSheet. kontingenční tabulky ("Tabulka MUODemoTable").PivotFields("Stát")
.Orientace = xlColumnField
KonecS
Chcete-li přidat hodnoty agregace:
S ActiveSheet. kontingenční tabulky ("Tabulka MUODemoTable").PivotFields("Odbyt")
.Orientace = xlDataField
.Funkce = xlSum
KonecS
Je důležité si uvědomit, že musíte odkazovat na aktivní list (kontingenční list), za kterým následuje název kontingenční tabulky a název proměnné. Když potřebujete přidat filtr(y), řádek(y) a sloupec(y), můžete přepínat mezi různými syntaxemi, které zahrnují následující:
- xlPageField: Chcete-li přidat filtry.
- xlRowField: Chcete-li přidat řádky.
- xlRowField: Chcete-li přidat sloupce.
Nakonec můžete použít xlDataField příkaz pro výpočet agregací hodnot. Můžete použít další agregační funkce, jako je xlSum, xlAverage, xlCount, xlMax, xlMin a xlProduct.
9. Spuštění kódu Excel VBA k vytvoření automatických pivotů
Nakonec, když je celý program připraven, můžete jej spustit stisknutím F5 nebo kliknutím na hrát si knoflík. Když se vrátíte na kontingenční list v sešitu, uvidíte, že je připravena nová kontingenční tabulka, kterou si můžete prohlédnout.
Chcete-li vidět postupné provádění příkazu kódu řádek po řádku, můžete přejít do editoru kódu a stisknout F8 několikrát. Tímto způsobem můžete vidět, jak funguje každý řádek kódu a jak VBA automaticky vytváří vaše pivoty.
Naučte se automaticky kódovat kontingenční tabulky
Pivoty nejsou omezeny pouze na MS Excel. Programovací jazyky jako Python vám umožňují vytvářet optimalizované pivoty pomocí několika řádků kódu.
Optimalizace dat nemůže být jednodušší než toto. V Pythonu můžete efektivně vybírat a vybírat své příkazy a snadno vytvořit podobnou strukturu jako v Excelu.