IT Fjernundervisning

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:

Hent regnearket her

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", xlSum

Koden 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 Sub

PivotCache

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 →