Avatar billede JP9 Juniormester
07. august 2015 - 08:44 Der er 7 kommentarer og
1 løsning

Pivottabel: Vis indhold af filterliste - VBA?

Hej

Jeg håber nogen har et godt bud på hvordan, jeg kan vise indholdet af en filterliste for en Pivottabel i Excel.

Jeg arbejder med en Pivottabel hvor man bl.a. i et filter kan vælge hvilken måned man vil se tallene i tabellen for.

Problemet er når der vælges flere måneder så viser Pivottabel (Flere elementer), jeg vil gerne kunne vise i en tabel eller i et tilhørende ark hvilke måneder der er valgt.

Findes der evt. en VBA kode der kan knække den nød?

NB. Arbejder i Excel 2013, men skal virke i ver. 2007

På forhånd tak for jeres hjælp!

Med venlig hilsen

JP
Avatar billede bak Seniormester
07. august 2015 - 10:10 #1
denne kode kan fungere med en knap.
Ellers kan du lave et worksheet.change event, der automatisk trigger det når feltet ændres.


Sub test()
    Dim p As PivotTable
    Dim pi As PivotItem
    Dim i As Long
   
    Set p = Sheet1.PivotTables(1)

    For Each pi In p.PageFields("Month").PivotItems

        If pi.Visible Then
            i = i + 1
            Sheet1.Range("H" & i) = pi.Name
        End If
     
    Next
End Sub
Avatar billede JP9 Juniormester
07. august 2015 - 10:40 #2
Hej Bak

Tak for hurtigt svar :-)

Jeg har forsøgt at implementerer din løsning, men af en eller anden grund får jeg en liste med tallene fra 1-6 og ikke de valgte måneder.
Lige meget om jeg vælger 2 eller 5 måneder så får jeg stadig listen som om der er valgt fra måned 1 til 6.

Den løber godt nok gennem koden 12 gange?

Har du nogen gode forslag?
Avatar billede bak Seniormester
10. august 2015 - 10:32 #3
Næh, lyder mystisk. Jeg har ingen problemer med koden. Er du sikker på at du ikke forveksler 2 pivotfields. Det kunne se sådan ud.
Avatar billede bak Seniormester
10. august 2015 - 16:57 #4
du er velkommen til at sende arket til tommybak(at)gmail.com
Avatar billede JP9 Juniormester
11. august 2015 - 09:55 #5
Hej Bak

Så fik jeg det til virke, mange tak for hjælpen.

Send et svar!

Lige et lille tillægsspørgsmål, hvis du har tid:

Hvis jeg vil bestemme hvor i arket, jeg gerne vil starte min liste. F.eks i A38 hvordan vil koden så se ud?
Avatar billede bak Seniormester
11. august 2015 - 12:54 #6
Sub test()
    Dim p As PivotTable
    Dim pi As PivotItem
    Dim i As Long
   
    Set p = Sheet1.PivotTables(1)

    i = 37

    For Each pi In p.PageFields("Month").PivotItems

        If pi.Visible
            i = i + 1
            Sheet1.Range("A" & i) = pi.Name
        End If
     
    Next
End Sub
Avatar billede bak Seniormester
11. august 2015 - 13:00 #7
Ups..der var en lille fejl, så det her er lidt bedre.


Sub test()
    Const Start As String = "A38"
    Dim p As PivotTable
    Dim pi As PivotItem
    Dim i As Long
   
    Set p = Sheet1.PivotTables(1)
    For Each pi In p.PageFields("Month").PivotItems

        If pi.Visible Then
            Sheet1.Range(Start).Offset(i) = pi.Name
            i = i + 1
        End If
     
    Next
End Sub
Avatar billede JP9 Juniormester
11. august 2015 - 15:40 #8
Hej Bak

Mange tak for hjælpen, send venligst et svar igen og få dine velfortjente point :-)
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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