Az Excel kimutatástáblái kulcsfontosságúak az adatok könnyebb megértésében és megértésében. A pivot tábla képes tömöríteni és értelmes struktúrákká tömöríteni az adatokat. Az MS Excel felhasználók széles körben alkalmazták őket az adatiparban.

Tudta, hogy az Excelben automatizálhatja kimutatástábláit, és egyetlen kattintással létrehozhatja azokat? Az MS Excel jól integrálható a VBA-val, és kiváló eszközzé vált az ismétlődő feladatok automatizálására.

Így automatizálhatja a pivot táblát makróval az MS Excel VBA programban.

Használjon gyakorlati adatkészletet

Letölthet és használhat egy próbabábut adatkészlet a Tableau-ból hogy kövesse az útmutatóban található VBA-szkriptet. A VBA-kód minden más adatkészlettel működik, néhány alapvető módosítással. Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik engedélyezett makrók az Excel-munkafüzetben.

Van néhány alapvető oszlop, amelyet használhat a kimutatástáblázatban. A táblázat árnyalatainak és végső szerkezetének megértéséhez megteheti hozzon létre egy alapvető pivot táblát kézzel a következő elemekkel:

instagram viewer
  • Szűrő: Vidék
  • Sorok: Alkategória
  • Oszlopok: Állapot
  • Értékek: Értékesítés

A végcsapnak a következőképpen kell kinéznie:

A kézi előkészítés helyett azonban engedélyezheti a VBA-nak, hogy ezt automatikusan megtegye.

Hogyan lehet automatikusan létrehozni pivot táblákat az Excelben

A pivot táblák VBA-val történő automatizálásához nyisson meg egy új Excel-fájlt, és nevezze át a lapokat az alábbiak szerint:

  • Első lap: Makró
  • Második lap: Adat

A Makró lap tartalmazza a makró szkriptet, míg a Adat lap tartalmazza az Ön adatait. A makrólapra tetszőleges alakzatot szúrhat be, és hozzárendelheti a makrót. Kattintson a jobb gombbal az alakzatra, majd kattintson a Makró hozzárendelése lehetőségre.

A következő párbeszédpanelen kattintson a makró nevére, majd kattintson az OK gombra. Ez a lépés hozzárendeli a makrót az alakzathoz.

1. Nyissa meg az Excel VBA kódszerkesztőt

nyomja meg Alt + F11 a kódszerkesztő megnyitásához. Miután belépett a kódszerkesztőbe, kattintson jobb gombbal a fájl nevére, majd kattintson a gombra Beszúrás és Modul. Fontos megjegyezni, hogy az összes VBA-kódot meg kell írnia egy modulon belül, mielőtt végrehajtaná.

Célszerű olyan modulnevet használni, amely összhangban van a kód céljával. Mivel ez egy demó, a modul nevét a következőképpen adhatja meg:

sub pivot_demo()

A modul neve ezzel végződik Vége Sub, amely egy modul befejező parancsa:

Vége Alatti

2. Változók deklarálása

A modulon belül kezdje a változók deklarálásával, hogy tároljon néhány felhasználó által definiált értéket, amelyet a szkriptben fog használni. Használhatja a Homályos utasítás a változók deklarálására, az alábbiak szerint:

Dim PSheet Mint Munkalap, DSheet Mint Munkalap
Dim PvtCache Mint PivotCache
Dim PvtTable Mint Pivot tábla
Dim PvtRange Mint Hatótávolság
Dim Last_Row Mint Hosszú, Last_Col Mint Hosszú
Dim sht1 mint Változat

Ezeket a változókat a következőkhöz fogja használni:

  • PSheet: A céllap, ahol a VBA pivotot hoz létre.
  • DSheet: Az adatlap.
  • PvtCache: A pivot gyorsítótár tartja a pivotot.
  • PvtTable: A kimutatástábla objektuma.
  • PvtRange: A pivot adattartománya.
  • Last_Row és Last_Col: Utoljára kitöltött sor és oszlop az adatlapon (DSheet) belül.
  • Sht1: Ez a változó egy változat.

3. Figyelmeztetések és üzenetek letiltása

A szükségtelen hibák, figyelmeztetések és üzenetek lelassítják a VBA-kódokat. Az ilyen üzenetek letiltásával jelentősen felgyorsíthatja a folyamatot.

Használja a következő kódot:

Tovább Hiba Folytatás Tovább

Val vel Alkalmazás
.DisplayAlerts = Hamis
.ScreenUpdating = Hamis
VégeVal vel

Ahol:

  • Hiba esetén Folytatás Következő: Ez a záradék elnyomja a futásidejű hibákat.
  • Alkalmazás: Az alkalmazás az MS Excelre vonatkozik.
  • Display Alerts: A DisplayAlerts tulajdonság határozza meg, hogy megjelenjenek-e a figyelmeztetések.
  • Képernyőfrissítés: Ez a tulajdonság határozza meg, hogy a változtatásokat valós időben frissítse-e, vagy csak a kód futása után.

Amikor ez a kód fut, elnyom minden riasztást, figyelmeztetést és üzenetet, amelyet az Excel egyébként megjelenítene. A DisplayAlerts és a ScreenUpdating paramétereket kikapcsolhatja, ha értéküket a következőre állítja Hamis.

A kód vége felé a következő érték beállításával újra bekapcsolhatja őket Igaz.

4. Törölje a meglévő kimutatásokat

Új kimutatástábla létrehozásához két lehetőség közül választhat. Először törölje a meglévő pivot lapot, és a VBA segítségével hozzon létre egy új lapot a pivot tárolására. Alternatív megoldásként használhat egy meglévő munkalapot a pivot megtartására.

Ebben az útmutatóban hozzunk létre egy új pivot lapot a pivot tábla tárolásához.

A az egyes ciklus végigjárja a munkafüzet minden egyes lapját, és eltárolja a lap nevét a munkafüzetben sht1 változó. A lap nevének tárolására bármilyen változónevet (sht1) használhat. A ciklus az aktuális munkafüzet minden lapján áthalad, és keres egyet a konkrét névvel (Pivot).

Ha a lapnév megegyezik, törli a lapot, és a következő lapra lép. Miután a kód az összes lapot ellenőrzi, kilép a ciklusból, és a kód következő részére lép, amely egy új lapot ad hozzá, Pivot.

A következőképpen teheti meg:

MertMinden egyessht1Ban benActiveWorkbook.Feladatlapok
Ha sht1.Name = "Pivot" Akkor
sht1.Töröl
VégeHa
Következő sht1

Munkalapok. Hozzáadás. Név = "Pivot"

5. Határozza meg az adatforrást és a kimutatáslapokat

Elengedhetetlen a változók létrehozása a Pivot és az adatlapok hivatkozásainak tárolására. Ezek parancsikonként működnek, amelyekre a kód többi részében hivatkozhat.

Set PSheet = Munkalapok("Pivot")
Set DSheet = Munkalapok("Adat")

6. Határozza meg az utoljára használt sort és oszlopot

A kódnak ez a része dinamikusan működik, mivel az adatok utoljára kitöltött sorát és oszlopát méretezi.

Last_Row = DSheet. Cellák (sorok. Szám, 1).Vége (xlUp).Sor
Last_Col = DSheet. Cellák (1, oszlopok. Szám).Vége (xlToBal).Oszlop
Készlet PvtRange = DSheet. Cellák(1, 1).Átméretezés (Utolsó_Sor, Utolsó_Sor)

Ahol:

  • Last_Row: Változó az utoljára kitöltött sorszám tárolására, azaz a 9995
  • Last_Col: Változó az utoljára kitöltött oszlopszám tárolására, azaz a 21
  • PvtRange: A PvtRange a pivot teljes adattartományára hivatkozik

7. Hozzon létre egy kimutatás-gyorsítótárat és egy kimutatástáblát

A pivot gyorsítótár tartja a pivot táblát; ezért a pivot tábla létrehozása előtt létre kell hoznia egy gyorsítótárat. A VBA szintaktikai hivatkozásait kell használnia a pivot gyorsítótár létrehozásához a kimutatáslapon belül.

A pivot gyorsítótárra való hivatkozással pivot táblát kell létrehoznia. A pivot tábla részeként megadhatja a lapot, a cellahivatkozást és a kimutatástábla nevét.

PvtCache = ActiveWorkbook beállítása. PivotCaches. Létrehozása (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Cellák (2, 2), Táblanév:="MUODemoTable")
PvtTable = PvtCache beállítása. CreatePivotTable (TableDestination:=PSheet. Cellák (1, 1), Táblanév:="MUODemoTable")

Ahol:

  • ActiveWorkbook: Az aktuális munkafüzet, ahol az Adat- és kimutatáslap található.
  • PivotCaches. Teremt: Alapértelmezett szintaxis a pivot cache létrehozásához.
  • Forrás típus: Mivel az adatok a munkafüzetben vannak, így definiálhatja őket xlAdatbázis. Néhány más lehetőség is xlKonszolidáció, xlKülső, vagy xlPivotTable.
  • Forrásadatok: Forrásadatként hivatkozhat az előző pivot tartományra.
  • PivotTable létrehozása: Alapértelmezett parancs a pivot tábla létrehozásához.
  • TableDestination: Meg kell adnia a lap- és cellahivatkozásokat, ahol létre kívánja hozni a pivotot.
  • Táblanév: Adja meg a pivot tábla nevét.
  • PivotTable létrehozása: Alapértelmezett parancs a pivot tábla létrehozásához a pivot gyorsítótáron belül.

8. Sorok, oszlopok, szűrők és értékek beszúrása

Mivel a pivot tábla készen áll, el kell kezdenie hozzáadni a paramétereket a szűrőkhöz, sorokhoz, oszlopokhoz és összesítési értékekhez. Használhatja a VBA-t forgásmezők parancsot a részletek deklarálásához.

Szűrőértékek hozzáadása:

ActiveSheet segítségével. PivotTables("MUODemoTable").PivotFields("Vidék")
.Orientation = xlPageField
VégeVal vel

Sorértékek hozzáadása:

ActiveSheet segítségével. PivotTables("MUODemoTable").PivotFields("Alkategória")
.Tájolás = xlRowField
VégeVal vel

Oszlopértékek hozzáadása:

ActiveSheet segítségével. PivotTables("MUODemoTable").PivotFields("Állapot")
.Orientation = xlColumnField
VégeVal vel

Összesítési értékek hozzáadása:

ActiveSheet segítségével. PivotTables("MUODemoTable").PivotFields("Értékesítés")
.Orientation = xlDataField
.Funkció = xlSum
VégeVal vel

Fontos megjegyezni, hogy hivatkoznia kell az aktív munkalapra (kimutatási lapra), majd a kimutatástábla nevére és a változó nevére. Ha szűrő(ke)t, sor(oka)t és oszlop(oka)t kell hozzáadnia, válthat a különböző szintaxisok között, amelyek a következőket tartalmazzák:

  • xlPageField: Szűrők hozzáadásához.
  • xlRowField: Sorok hozzáadásához.
  • xlRowField: Oszlopok hozzáadásához.

Végül használhatja a xlDataField parancsot az értékösszesítések kiszámításához. Használhat más összesítő függvényeket is, például xlSum, xlAverage, xlCount, xlMax, xlMin és xlProduct.

9. Az Excel VBA kód futtatása az automatikus pivotok létrehozásához

Végül, amikor a teljes program készen áll, a gomb megnyomásával futtathatja F5 vagy kattintson a gombra játék gomb. Amikor visszatér a munkafüzet kimutatási lapjához, látni fogja, hogy egy új kimutatástábla készen áll az áttekintésre.

Ha lépésről lépésre szeretné látni a kódparancs soronkénti végrehajtását, navigálhat a kódszerkesztőbe, és nyomja meg a F8 többször. Így láthatja, hogyan működnek az egyes kódsorok, és hogyan hozza létre a VBA automatikusan a pivotokat.

Tanulja meg a pivot táblák automatikus kódolását

A pivotok nem korlátozódnak csak az MS Excelre. Az olyan programozási nyelvek, mint a Python, lehetővé teszik optimalizált pivotok létrehozását néhány sornyi kóddal.

Az adatoptimalizálás nem is lehet egyszerűbb ennél. Hatékonyan kiválaszthatja a parancsokat a Pythonban, és könnyedén megvalósíthat egy hasonló Excel-szerű pivot struktúrát.