VBA -guide till pivottabeller

Denna handledning visar hur du arbetar med pivottabeller med VBA.

Pivottabeller är verktyg för datasammanfattning som du kan använda för att dra viktiga insikter och sammanfattningar från dina data. Låt oss titta på ett exempel: vi har en källdataset i cellerna A1: D21 som innehåller detaljerna om sålda produkter, som visas nedan:

Använda GetPivotData för att erhålla ett värde

Anta att du har en pivottabell som heter Pivottabell1 med försäljning i fältet Värden/data, Produkt som rader och Region som fältet Kolumner. Du kan använda metoden PivotTable.GetPivotData för att returnera värden från pivottabeller.

Följande kod returnerar $ 1130,00 (den totala försäljningen för East Region) från pivottabellen:

1 MsgBox ActiveCell.PivotTable.GetPivotData ("Försäljning", "Region", "Öst")

I det här fallet är försäljning "DataField", "Field1" är regionen och "Item1" är öst.

Följande kod returnerar $ 980 (den totala försäljningen för produkt -ABC i norra regionen) från pivottabellen:

1 MsgBox ActiveCell.PivotTable.GetPivotData ("försäljning", "produkt", "ABC", "region", "norr")

I det här fallet är försäljning "DataField", "Field1" är produkt, "Item1" är ABC, "Field2" är Region och "Item2" är norr.

Du kan också inkludera mer än 2 fält.

Syntaxen för GetPivotData är:

GetPivotData (Data fält, Fält 1, Artikel 1, Fält 2, Artikel 2… ) var:

Parameter Beskrivning
Data fält Datafält som försäljning, kvantitet etc. som innehåller siffror.
Fält 1 Namn på en kolumn eller radfält i tabellen.
Artikel 1 Namn på ett objekt i fält 1 (valfritt).
Fält 2 Namn på en kolumn eller radfält i tabellen (valfritt).
Punkt 2 Namn på ett objekt i fält 2 (valfritt).

Skapa ett pivottabell på ett ark

För att skapa en pivottabell baserat på dataintervallet ovan, i cell J2 på Sheet1 i den aktiva arbetsboken, skulle vi använda följande kod:

1234567891011 Arbetsblad ("Ark1"). Celler (1, 1) .VäljActiveWorkbook.PivotCaches.Create (SourceType: = xlDatabase, SourceData: = _"Sheet1! R1C1: R21C4", Version: = xlPivotTableVersion15) .CreatePivotTable _TableDestination: = "Sheet1! R2C10", TableName: = "PivotTable1", DefaultVersion _: = xlPivotTableVersion15Ark ("Ark1"). Välj

Resultatet är:

Skapa ett pivottabell på ett nytt ark

För att skapa en pivottabell baserat på dataområdet ovan, på ett nytt blad i den aktiva arbetsboken, skulle vi använda följande kod:

12345678910111213 Arbetsblad ("Ark1"). Celler (1, 1) .VäljArk. Lägg tillActiveWorkbook.PivotCaches.Create (SourceType: = xlDatabase, SourceData: = _"Sheet1! R1C1: R21C4", Version: = xlPivotTableVersion15) .CreatePivotTable _TableDestination: = "Sheet2! R3C1", TableName: = "PivotTable1", DefaultVersion _: = xlPivotTableVersion15Ark ("Ark2"). Välj

Lägga till fält i pivottabellen

Du kan lägga till fält i den nyskapade pivottabellen PivotTable1 baserat på dataområdet ovan. Obs! Arket som innehåller ditt pivottabell måste vara det aktiva bladet.

Om du vill lägga till en produkt i raderna använder du följande kod:

123 ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Product"). Orientation = xlRowFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Product"). Position = 1

Om du vill lägga till region i kolumnfältet använder du följande kod:

123 ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Orientation = xlColumnFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Position = 1

Om du vill lägga till försäljning i värdesektionen med valutanummerformatet använder du följande kod:

123456789 ActiveSheet.PivotTables ("PivotTable1"). AddDataField ActiveSheet.PivotTables (_"PivotTable1"). PivotFields ("Sales"), "Summa försäljning", xlSumMed ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Summa försäljning").NumberFormat = "$#, ## 0.00"Sluta med

Resultatet är:

Ändra rapportlayout för pivottabellen

Du kan ändra rapportlayouten för din pivottabell. Följande kod ändrar rapportlayouten för din pivottabell till tabellform:

1 ActiveSheet.PivotTables ("PivotTable1"). TableStyle2 = "PivotStyleLight18"

Ta bort ett pivottabell

Du kan ta bort en pivottabell med VBA. Följande kod tar bort pivottabellen PivotTable1 på det aktiva bladet:

12 ActiveSheet.PivotTables ("PivotTable1"). PivotSelect "", xlDataAndLabel, TrueSelection.ClearContents

Formatera alla pivottabeller i en arbetsbok

Du kan formatera alla pivottabeller i en arbetsbok med VBA. Följande kod använder en loopstruktur för att bläddra igenom alla ark i en arbetsbok och ta bort alla pivottabeller i arbetsboken:

12345678910111213 SubformateringAllThePivotTablesInAWorkbook ()Dimma veckor som arbetsbladDim wb Som arbetsbokAnge wb = ActiveWorkbookDim pt som pivottabellFör varje vecka i wb.SheetsFör varje pt In wks.PivotTablespt.TableStyle2 = "PivotStyleLight15"Nästa ptNästa veckaAvsluta Sub

För att lära dig mer om hur du använder Loops i VBA klicka här.

Ta bort fält i ett pivottabell

Du kan ta bort fält i en pivottabell med VBA. Följande kod tar bort produktfältet i avsnittet Rader från en pivottabell med namnet PivotTable1 i det aktiva bladet:

12 ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Product"). Orientering = _xlGömt

Skapa ett filter

En pivottabell med namnet PivotTable1 har skapats med Produkt i avsnittet Rader och Försäljning i värdesektionen. Du kan också skapa ett filter för ditt pivottabell med VBA. Följande kod skapar ett filter baserat på region i avsnittet Filter:

123 ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Orientation = xlPageFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Position = 1

För att filtrera din pivottabell baserat på ett enda rapportobjekt i det här fallet östra regionen, använder du följande kod:

12345 ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). ClearAllFiltersActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). CurrentPage = _"Öst"

Låt oss säga att du ville filtrera din pivottabell baserat på flera regioner, i det här fallet öst och norr, skulle du använda följande kod:

1234567891011121314 ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Orientation = xlPageFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Position = 1ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). _EnableMultiplePageItems = TrueMed ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region").PivotItems ("söder"). Synligt = falskt.PivotItems ("väst"). Synligt = falsktSluta med

Uppdaterar ditt pivottabell

Du kan uppdatera ditt pivottabell i VBA. Du skulle använda följande kod för att uppdatera en specifik tabell som heter PivotTable1 i VBA:

1 ActiveSheet.PivotTables ("PivotTable1"). PivotCache.Refresh

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave