Avatar billede Sara9 Juniormester
27. maj 2018 - 15:02 Der er 9 kommentarer

2 Pivot tabel i et excel ark

Hej
Jeg har en kode til en pivot tabel. Jeg skal nu lave have endnu en pivot tabel i det samme ark, men bare ved siden af det gamle. Problemet er så, at min kode gør sådan, at den skal slette arket først og så oprette et nyt ark. Derfor har jeg problemer med at indsætte 2 pivot tabeller i et ark. En der kan hjælpe?

Her er min kode til den første pivot tabel. Nummer 2 skal være det samme, men skal bare placeres ved siden af.

Sub Opgave_3()

Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PTable2 As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long


On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Statistics").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "Statistics"
Application.DisplayAlerts = True
Set PSheet = Worksheets("Statistics")
Set DSheet = Worksheets("Base")


LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)


Set PCache = ActiveWorkbook.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="StuderendeFordelingFakultetPivotTable")


Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="StuderendeFordelingFakultetPivotTable")


With ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable").PivotFields("Faculty_ID")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable").PivotFields("PROGRAM_TYPE_NAME")
.Orientation = xlColumnField
.Position = 1
End With


ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable").AddDataField _
        ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable").PivotFields( _
        "STUDENT_ID"), "Count of STUDENT_ID", xlCount



ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable").ShowTableStyleRowStripes = True
ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable").TableStyle2 = "PivotStyleMedium9"

End Sub
Avatar billede kim1a Ekspert
27. maj 2018 - 16:49 #1
Du kan jo bruge samme cache, så er det blot denne som skal rettes i destinationen og navnet:
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="StuderendeFordelingFakultetPivotTable")
Avatar billede Sara9 Juniormester
27. maj 2018 - 17:02 #2
Det virker ikke, da min kode starter med at slette arket og oprette et nyt. Derfor bliver det gamle ark med den gamle pivot tabel slettet.
Avatar billede kim1a Ekspert
27. maj 2018 - 18:34 #3
Men hvorfor vil du have den del med? Du skal jo blot medtage fra hvor jeg saksede :-)

Sker der noget ved at der skabes to pivoter på samme ark (netop som du skriver), uanset om du kun skal bruge den ene?

Hvis det skal være hver sin knap skal du naturligvis fjerne den del der sletter arket.
Avatar billede Sara9 Juniormester
27. maj 2018 - 18:37 #4
Jeg har også prøvet at slette den del, men så gider den desværre ikke. Koden er så lang, at jeg ikke kan finde rundt i den og er lidt usikker på hvilken del jeg skal slette :/
Avatar billede kim1a Ekspert
27. maj 2018 - 20:52 #5
Prøv at indsætte dette i bunden er det nuværende:

CreatePivotTable(TableDestination:=PSheet.Cells(12, 12), _
TableName:="StuderendeFordelingFakultetPivotTable2")

With ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable2").PivotFields("Faculty_ID")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable2").PivotFields("PROGRAM_TYPE_NAME")
.Orientation = xlColumnField
.Position = 1
End With


ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable2").AddDataField _
        ActiveSheet.PivotTables("StuderendeFordelingFakultetPivotTable2").PivotFields( _
        "STUDENT_ID"), "Count of STUDENT_ID", xlCount
Avatar billede Sara9 Juniormester
27. maj 2018 - 20:59 #6
Den markere dette rødt:

CreatePivotTable(TableDestination:=PSheet.Cells(12, 12), _
TableName:="StuderendeFordelingFakultetPivotTable2")
Avatar billede kim1a Ekspert
27. maj 2018 - 21:21 #7
Ah, det var mig der slettede noget:
Set PCache = ActiveWorkbook.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(12, 12), _
TableName:="StuderendeFordelingPivotTable2")
Avatar billede Sara9 Juniormester
27. maj 2018 - 21:35 #8
Det giver et tomt felt, hvor man selv kan lave sin pivot tabel ved brug af excel...
Avatar billede Sara9 Juniormester
27. maj 2018 - 22:19 #9
Har fået det til at virkelig ellers tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester