Draaitabellen in Excel zijn cruciaal om gegevens begrijpelijker en begrijpelijker te maken. Een draaitabel kan gegevens condenseren en samenvatten in betekenisvolle structuren. MS Excel-gebruikers hebben ze op grote schaal overgenomen in de data-industrie.

Wist u dat u uw draaitabellen in Excel kunt automatiseren en met één klik kunt maken? MS Excel integreert goed met VBA en is een uitstekende tool geworden voor het automatiseren van repetitieve taken.

Hier leest u hoe u een draaitabel kunt automatiseren met een macro in MS Excel VBA.

Gebruik een oefengegevensset

U kunt een dummy downloaden en gebruiken dataset van Tableau om het VBA-script in deze handleiding te volgen. De VBA-code werkt met elke andere dataset, met een paar basisaanpassingen. Voordat u begint, moet u ervoor zorgen dat u dat hebt gedaan ingeschakelde macro's in uw Excel-werkmap.

Er zijn een paar essentiële kolommen die u kunt gebruiken in de draaitabel. Om de nuances en uiteindelijke structuur van de tabel te begrijpen, kunt u handmatig een eenvoudige draaitabel maken met de volgende elementen:

  • Filter: Regio
  • rijen: Subcategorie
  • kolommen: Staat
  • Waarden: verkoop

Het eindspil zou er als volgt uit moeten zien:

U kunt VBA dit echter automatisch laten doen in plaats van het handmatig voor te bereiden.

Hoe u automatisch draaitabellen maakt in Excel

Om uw draaitabellen met VBA te automatiseren, opent u een nieuw Excel-bestand en hernoemt u de bladen als volgt:

  • Eerste blad: Makro
  • Tweede blad: Gegevens

De Makro sheet bevat het macroscript, terwijl de Gegevens blad bevat uw gegevens. Op het macroblad kunt u elke gewenste vorm invoegen en de macro eraan toewijzen. Klik met de rechtermuisknop op de vorm en klik op Macro toewijzen.

Klik in het volgende dialoogvenster op de naam van uw macro en klik op OK. Met deze stap wordt de macro aan de vorm toegewezen.

1. Open de Excel VBA-coderingseditor

druk op Alt+F11 om de code-editor te openen. Zodra u zich in de code-editor bevindt, klikt u met de rechtermuisknop op de bestandsnaam, gevolgd door Invoegen En Modulair. Het is belangrijk om te onthouden dat u alle VBA-code binnen een module schrijft voordat u deze uitvoert.

Het is een goede gewoonte om een ​​modulenaam te gebruiken die resoneert met het doel van de code. Aangezien dit een demo is, kunt u de modulenaam als volgt definiëren:

sub-pivot_demo()

De modulenaam eindigt op Eind sub, wat het eindcommando is van een module:

Einde Sub

2. Variabelen declareren

Begin binnen de module met het declareren van variabelen om enkele door de gebruiker gedefinieerde waarden op te slaan die u in het script zult gebruiken. U kunt de Afm instructie om variabelen te declareren, als volgt:

Verduister PSheet Als Werkblad, DSheet Als Werkblad
Dim PvtCache Als PivotCache
Dim PvtTable Als Draaitabel
Dim PvtRange Als Bereik
Dim Last_Row Als Lang, Last_Col Als Lang
Dim sht1 als Variant

U gebruikt deze variabelen voor het volgende:

  • PBlad: Het bestemmingsblad, waar VBA een draaipunt zal maken.
  • DBlad: Het gegevensblad.
  • PvtCache: Een spilcache houdt de spil vast.
  • PvtTabel: Het draaitabelobject.
  • PvtBereik: Een gegevensbereik voor de spil.
  • Last_Row en Last_Col: Laatst ingevulde rij en kolom in het gegevensblad (DSheet).
  • Sht1: Deze variabele is een variant.

3. Onderdruk waarschuwingen en berichten

Onnodige fouten, waarschuwingen en berichten vertragen uw VBA-codes. Door dergelijke berichten te onderdrukken, kunt u het proces aanzienlijk versnellen.

Gebruik de volgende code:

Op Fout Hervat volgende

Met Sollicitatie
.Alerts weergeven = Vals
.SchermUpdating = Vals
EindeMet

Waar:

  • Bij fout Hervatten Volgende: Deze clausule onderdrukt eventuele runtime-fouten.
  • Sollicitatie: Toepassing verwijst naar MS Excel.
  • Weergavewaarschuwingen: De eigenschap DisplayAlerts definieert of waarschuwingen moeten worden weergegeven.
  • Schermupdate: Deze eigenschap definieert of wijzigingen in realtime moeten worden bijgewerkt of pas nadat de code is voltooid.

Wanneer deze code wordt uitgevoerd, onderdrukt deze alle waarschuwingen, waarschuwingen en berichten die Excel anders zou laten zien. U kunt DisplayAlerts en ScreenUpdating-parameters uitschakelen door hun waarden in te stellen op Vals.

Tegen het einde van de code kunt u ze weer inschakelen door de waarde in te stellen als WAAR.

4. Verwijder eventuele bestaande draaitabelbladen

Om een ​​nieuwe draaitabel te maken, heb je twee opties. Verwijder eerst het bestaande draaiblad en gebruik VBA om een ​​nieuw blad te maken om het draaiblad in op te slaan. U kunt ook een bestaand werkblad gebruiken om de spil vast te houden.

Laten we in deze handleiding een nieuw draaitabel maken om de draaitabel in op te slaan.

De voor elk lus doorloopt elk blad in de werkmap en slaat de bladnaam op in het sht1 variabel. U kunt elke variabelenaam (sht1) gebruiken om de bladnaam vast te houden. De lus doorloopt elk blad in de huidige werkmap, op zoek naar een blad met de specifieke naam (Scharnier).

Wanneer de bladnaam overeenkomt, wordt het blad verwijderd en gaat het naar het volgende blad. Zodra de code alle bladen heeft gecontroleerd, verlaat het de lus en gaat het naar het volgende deel van de code, dat een nieuw blad toevoegt, Scharnier.

Hier is hoe je het kunt doen:

VoorElksht1InActiefWerkboek.Werkbladen
Als sht1.Naam = "Scharnier" Dan
sht1.Verwijderen
EindeAls
Volgende sht1

Werkbladen. Toevoegen. Naam = "Scharnier"

5. Definieer gegevensbron en draaibladen

Het is essentieel om variabelen te creëren om de referenties van de Pivot- en Gegevensbladen op te slaan. Deze werken als snelkoppelingen waarnaar u in de rest van de code kunt verwijzen.

Stel PSheet = Werkbladen("Scharnier")
Stel DSheet = Werkbladen in ("Gegevens")

6. Identificeer de laatst gebruikte rij en kolom

Dit deel van de code werkt dynamisch, omdat het de laatste bevolkte rij en kolom binnen de gegevens groter maakt.

Laatste rij = DBlad. Cellen (rijen. Tellen, 1).End (xlUp).Rij
Last_Col = DBlad. Cellen (1, Kolommen. Count).End (xlToLeft).Column
Set PvtRange = DBlad. Cellen(1, 1).Formaat wijzigen (Last_Row, Last_Col)

Waar:

  • Laatste rij: Variabele om het laatst ingevulde rijnummer op te slaan, d.w.z. 9995
  • Laatste_Col: Variabele om het laatst ingevulde kolomnummer op te slaan, d.w.z. 21
  • PvtBereik: PvtRange verwijst naar het volledige gegevensbereik voor de spil

7. Maak een draaitabel en een draaitabel

Een draaitabel bevat de draaitabel; daarom moet u een cache maken voordat u een draaitabel maakt. U moet de syntaxisreferenties van VBA gebruiken om de spilcache in het spilblad te maken.

Door te verwijzen naar de draaitabel, moet u een draaitabel maken. Als onderdeel van de draaitabel kunt u het blad, de celverwijzing en de naam van de draaitabel definiëren.

Stel PvtCache in = ActiveWorkbook. PivotCaches. Maak (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Cellen (2, 2), Tabelnaam:="MUODemoTable")
Stel PvtTable = PvtCache in. CreatePivotTable (TableDestination:=PSheet. Cellen (1, 1), Tabelnaam:="MUODemoTable")

Waar:

  • ActiefWerkboek: De huidige werkmap met het gegevens- en draaiblad.
  • PivotCaches. Creëren: Standaardsyntaxis om een ​​spilcache te maken.
  • Bron Type: Aangezien u de gegevens in de werkmap hebt, kunt u deze definiëren als xlDatabase. Enkele andere opties omvatten xlConsolidatie, xlExtern, of xldraaitabel.
  • Data bron: U kunt verwijzen naar het vorige draaibereik als de brongegevens.
  • Draaitabel maken: Standaardopdracht om de draaitabel te maken.
  • Tafelbestemming: U moet de blad- en celverwijzingen specificeren waar u de spil wilt maken.
  • Tafel naam: Geef een draaitabelnaam op.
  • Draaitabel maken: Standaardopdracht om de draaitabel binnen de draaitabel te maken.

8. Voeg rijen, kolommen, filters en waarden in

Aangezien de draaitabel klaar is, moet u beginnen met het toevoegen van de parameters binnen de filters, rijen, kolommen en aggregatiewaarden. U kunt de VBA gebruiken draaivelden opdracht om te beginnen met het declareren van de details.

Filterwaarden toevoegen:

Met ActiveSheet. Draaitabellen("MUODemoTable").PivotFields("Regio")
.Oriëntatie = xlPageField
EindeMet

Rijwaarden toevoegen:

Met ActiveSheet. Draaitabellen("MUODemoTable").PivotFields("Subcategorie")
.Oriëntatie = xlRowField
EindeMet

Kolomwaarden toevoegen:

Met ActiveSheet. Draaitabellen("MUODemoTable").PivotFields("Staat")
.Oriëntatie = xlColumnField
EindeMet

Aggregatiewaarden toevoegen:

Met ActiveSheet. Draaitabellen("MUODemoTable").PivotFields("verkoop")
.Oriëntatie = xlDataField
.Functie = xlSom
EindeMet

Het is essentieel op te merken dat u moet verwijzen naar het actieve blad (draaiblad), gevolgd door de naam van de draaitabel en de naam van de variabele. Wanneer u de filter(s), rij(en) en kolom(men) moet toevoegen, kunt u schakelen tussen verschillende syntaxis, waaronder de volgende:

  • xlPageField: Om filters toe te voegen.
  • xlRowVeld: Om rijen toe te voegen.
  • xlRowVeld: Om kolommen toe te voegen.

Tot slot kunt u de xlGegevensveld opdracht om de waarde-aggregaties te berekenen. U kunt andere statistische functies gebruiken, zoals xlSum, xlAverage, xlCount, xlMax, xlMin en xlProduct.

9. De Excel VBA-code uitvoeren om automatische draaipunten te maken

Eindelijk, als het hele programma klaar is, kunt u het uitvoeren door op te drukken F5 of klik op de toneelstuk knop. Wanneer u teruggaat naar het draaiblad in uw werkmap, ziet u dat er een nieuwe draaitabel klaarstaat die u kunt bekijken.

Als u een stapsgewijze uitvoering wilt zien van hoe de codeopdracht regel voor regel wordt uitgevoerd, kunt u naar de code-editor navigeren en op drukken F8 meerdere malen. Op deze manier kunt u zien hoe elke regel code werkt en hoe VBA uw draaipunten automatisch maakt.

Draaitabellen automatisch leren coderen

Pivots zijn niet beperkt tot alleen MS Excel. Met programmeertalen zoals Python kun je geoptimaliseerde draaipunten maken met slechts een paar regels code.

Gegevensoptimalisatie kan niet eenvoudiger dan dit. U kunt uw opdrachten effectief kiezen en kiezen in Python en met gemak een vergelijkbare Excel-achtige draaistructuur tot stand brengen.