IT Fjernundervisning

Pivot felter

Beskrivelse

PivotFields

Kolonner og rækker i en PivotTabel kaldes felter og når felterne bruges i PivotTabel bliver det til PivotField objekter der samles i PivotFields samlingen. PivotFields samlingen indeholder alle felter i datakilden og beregnede felter der måtte være tilføjet, altså ikke kun de felter der synlige i tabellen.

Der er to metoder til at føje PivotFelter til en PivotTabel. Begge metoder kan ses af nedenstående eksempel:

Sub NytFeltTilTabel()     'Tilføjer nyt felt til eksisterende PivotTabel          'Tag fat i en eksisterende tabel     With ActiveSheet.PivotTables(1)         .AddFields RowFields:="Model", AddToTable:=True         .PivotFields("Dato").Orientation = xlPageField     End With End Sub

Man kan bruge AddFields metoden til at tilføje flere rækker, kolonner og side felter. Felterne vil erstatte eksisterende felter i tabellen med mindre AddToTable er sat til True. Man kan ikke bruge AddFields til at tilføje eller ændre datafelter. Nedenstående eksempel viser, hvordan man kan ændre layout på felterne i en eksisterende tabel:

Sub RedifinerTabel()     Dim pvt As PivotTable          'Tag fat i eksisterende tabel     Set pvt = ActiveSheet.PivotTables(1)          pvt.AddFields RowFields:=Array("Gruppe", "Firma"), _             ColumnFields:="Sælger", _             PageFields:="Model" End Sub 

Læg mærke til, hvordan Array funktionen benyttes til at tilføje flere felter til samme position.

Man kan bruge Orientering og Position til at organisere feltern i tabellen. Position definerer rækkefølgen af felterne i tabellen. Tilføjes f.eks. nedenstående linje til ovenstående ekempel

pvt.PivotFields("Firma").Position = 1

Vil Firma og gruppe bytte plads i tabellen.

Man kan  bruge Function egenskaben på PivotFields til at styre, hvordan felterne summeres og NumberFormat til at styre hvordan tallene vises. Prøv at se nedenstående eksempel, der er en fortsættelse af RedifinerTabel

Sub TilFøjDatafelt()     Dim pvt As PivotTable          Set pvt = ActiveSheet.PivotTables(1)          'Tilføj datafelt     With pvt.PivotFields("Antal")         .Orientation = xlDataField         .NumberFormat = "0"     End With          'Rediger eksisterende data felt     With pvt.DataFields("Sum of Total")         .Position = 2         .Function = xlCount         .NumberFormat = "0"     End With End Sub

Læg mærke til at man skal tilgå felterne med det navn der står i tabellen - her "Sum of Total". Alternativt kan man tilgå feltet med dets indeks eller give det et helt nyt navn.

Beregnede felter

Man kan oprette nye felter i tabellen ved at lave beregninger på eksisterende felter - nedenfor et ikke fantasifuldt eksempel, der beregner incl. moms prisen og sætter en pivottabel op med det som datafelt.

Sub BeregnetFelt()     Dim pvt As PivotTable     Dim wks As Worksheet          Set wks = Worksheets.Add     Set pvt = ActiveWorkbook.PivotCaches(1).CreatePivotTable( _             TableDestination:=wks.Range("A3"), TableName:="BeregnetFelt")     With pvt         'fjern feltet, hvis det findes i forvejen         On Error Resume Next         .PivotFields("InclMoms").Delete         On Error GoTo 0                  'Opret pris incl moms         .CalculatedFields.Add Name:="InclMoms", Formula:="=1,25*Total"                  'Tilføj rækker og søjler         .AddFields RowFields:="Gruppe", ColumnFields:="Sælger"                  'Tilføj InclMoms feltet som datafelt         With .PivotFields("InclMoms")             .Orientation = xlDataField             .NumberFormat = "0.00"         End With                  'Fjern totaler         .ColumnGrand = False     End With End Sub

Der er naturligvis en CalculatedFields samling, der indeholder alle beregnede felter i en pivottabel. Læg mærke til, at det nye felt faktisk bliver tilføjet til PivotCache selv om det ser ud som om det kun tilføjes PivotTabellen. Det betyder, at feltet kan bruges på andre pivottabeller og slettes den tabel der lige er blevet oprettet vil feltet alligevel være tilgængelig i PivotCache.

Pas på med at danne CalculatedFields. Vær opmærksom på at beregningen foretages efter informationerne er summet.

Havde vi f.eks. ikke et total felt i vores datagrundlag kunne man være fristet til at oprette et beregnet felt =Antal*Stk.Pris, men det ville gå galt, da den ville lægge alle Antal sammen og alle Stk.Pris sammen og først derefter gange dem med hinanden - det er ikke så godt...

Brug for hjælp til VBA, VSTO eller SQL?

Scient Data tilbyder professionel IT-konsulentbistand

Kontakt Scient Data →