Avatar billede ogodt Nybegynder
29. august 2012 - 11:48 Der er 6 kommentarer og
1 løsning

Filtrere i pivottabel

Hej,

vi har en pivottabel med en masse data som fungerer som den skal, bortset fra at vi har et rapportfilter som er datoer, og det er datoer per dag - f.eks. 27-08-12, 28-08-12 osv, men vi kan ikke lave dato filter på den, kun vælge datoer ud via flueben og det er lidt besværlig hvis man f.eks vil se et kvartal eller ½ år  :-(

Er der nogen hvordan vi får muligheden for og lave bedre datofilter.

vh.
Ole
Avatar billede supertekst Ekspert
29. august 2012 - 12:15 #1
Ja - via en Userform, hvor start- & slutdag indtastes. Denne kode anvendes så til automatisk ændring af filter.
Avatar billede ogodt Nybegynder
29. august 2012 - 12:43 #2
lyder godt at det kan laves, har du evt. lidt eksempel kode på hvordan og hvad hvis der bliver udvidet med datoer.?
Avatar billede supertekst Ekspert
29. august 2012 - 12:58 #3
Datoer indtastes - men man kunne supplere med at vise første og sidste dato i userformen - såfremt datoer liggeri stigende orden.
Avatar billede ogodt Nybegynder
29. august 2012 - 13:09 #4
jeg har datoer liggende i stigende orden, men hvordan fungerer det så hvis man f.eks. kun vil se Jan+Feb+Marts f.eks. ??
Avatar billede supertekst Ekspert
29. august 2012 - 13:12 #5
Det primære er følgende:

ActiveSheet.PivotTables("Pivottabel1").PivotFields("Dato").PivotFilters.Add _
            Type:=xlDateBetween, Value1:=fraDato, Value2:=tilDato
Avatar billede ogodt Nybegynder
31. august 2012 - 11:10 #6
jeg forstod ikke helt hvor du ville hen, men jeg fandt denne løsning som kan bruges.

Public Sub Filter()
    Application.ScreenUpdating = True
   
    Dim StartDate As Date, EndDate As Date

    StartDate = ActiveSheet.Range("E2").Value
    EndDate = ActiveSheet.Range("E3").Value
   
        If StartDate = 0 Then
        StartDate = "01/01/2011"
    End If
    If EndDate = 0 Then
        EndDate = Now()
    End If
   
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim pi As PivotItem
   
    For Each pt In ActiveSheet.PivotTables
       
        pt.PivotFields("Oprettet d.").ClearAllFilters
        Set pf = pt.PivotFields("Oprettet d.")
        For Each pi In pf.PivotItems
                If Not pi.Name = "(blank)" Then
                If pi.Value < StartDate Or pi.Value>EndDate          Then
                    pi.Visible = False
                Else
                    pi.Visible = True
                End If
            End If

        Next pi
    Next pt
   
    Application.ScreenUpdating = True
End Sub
Avatar billede supertekst Ekspert
31. august 2012 - 13:21 #7
Fint nok..
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