Dan pivottabel
Beskrivelse
Opret pivottabel
Pivottabeller kan hente sine data fra et regneark eller eksterne kilder som Access, SQL mv. Når data skal hentes i et regneark skal de stå ordnet i en dataliste eller en tabel. Det er også muligt at hente data fra en anden pivottabel eller fra konsoliderings områder. Kolonnerne i tabellen kalder vi felter og rækkerne for dataposter. Den øverste række giver felternes navne.
Vi arbejder med udgangspunkt i samme datasæt som Excel VBA kurset:

Optager du en makro, der danner en pivottabel som denne

Kommer koden til at se sådan her ud:
Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Salg!R1C1:R100C10", Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="Sheet1!R3C1", TableName:="PivotTable1", DefaultVersion _ :=xlPivotTableVersion10 Sheets("Sheet1").Select Cells(3, 1).Select With ActiveSheet.PivotTables("PivotTable1").PivotFields("Gruppe") .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sælger") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Total"), "Sum of Total", xlSumKoden danner en ny arkfane til pivottabellen, tilføjer en PivotCache (kommer vi tilbage til PivotCache senere) og med CreatePivotTable dannes pivottabellen. Endelig sættes kolonne, rækker og sum på tabellen.
Ovenstående kode er ikke speciel fleksibel - en mere fleksibel kode kunne se sådan her ud:
Sub DanPivottabel() Dim wks As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable 'Tilføj ny arkfane Set wks = Worksheets.Add 'Dan pivotcache - bemærk, at det forudsættes at der
'findes et navngivet "Data" område i regnearket Set pvc = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=Names("Data").RefersToRange) 'Dan pivottabel Set pvt = pvc.CreatePivotTable(TableDestination:=wks.Range("A3"), _ DefaultVersion:=xlPivotTableVersion12) 'Sæt felter på tabellen With pvt With .PivotFields("Gruppe") .Orientation = xlColumnField .Position = 1 End With With .PivotFields("Sælger") .Orientation = xlRowField .Position = 1 End With .AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Total"), "Sum of Total", xlSum End With End SubPivotCache
En PivotCache er en slags buffer hvor data til pivottabellen gemmes, den fungerer som kommunikationskanal mellem pivottabellen og de data der skal vises i tabellen. Gennem PivotCache har man rigtig fin kontrol over hvilke data der skal vises i pivottabellen. Specielt sammen med ADO (ActiveX Data Objects), som vi skal se senere, kan man styre indholdet i pivottabellen fra VBA.
Man kan også bruge PivotCache til at danne flere pivottabeller på den samme datakilde.
PivotTabel samlingen
Der er en anden metode til at oprette pivottabeller er at bruge PivotTables samlingen - se nedenstående eksempel:
Sub NyTabel() Dim pvc As PivotCache Dim pvt As PivotTable 'Brug den eksisterende PivotCache Set pvc = ActiveWorkbook.PivotCaches(1) 'Opret ny pivottabel Set pvt = ActiveSheet.PivotTables.Add(PivotCache:=pvc, TableDestination:=Range("A3")) End SubØvelse
Brug den generelle kode til at oprette 3 forskellige pivottabeller baseret på informationerne i regnearket.Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →