Avatar billede jpvj Nybegynder
05. august 2004 - 16:30 Der er 6 kommentarer og
1 løsning

Pivot tabel cacher gamle tabelpost værdier

Jeg arbejder med en pivot tabel, hvor kilde data bl.a. indeholder et datofelt (Måned) med formatet ÅÅÅÅ-MM.

Datakilden indeholder pt. kun værdierne
2004-05
2004-06
2004-07
2004-08

Når Måned trækkes ind fra feltlisten og placeres som kolonne felt, kan man vælge hvilke værdier fra feltet Måned, der skal med i pivot tabellen. (Dette er alle forskellige værdier som Måned kan antage - på samme måde som når man laver autofilter på en kolonne). Disse værdier burde naturligvis kun antage  ovennævnte 4 måneder.

Imidlertid er der "cached" en masse andre værdier for "Måned" fra tidligere kørsler, hvor datakilden ex. indeholdt værdier som

2003-07
2003-08
...

Hvordan fjerner man disse gamle værdier fra "drop down" boxen?

Hvis pivot tabellen oprettes fra scratch, så indeholder den de 4 korrekte værdier.
Avatar billede bak Forsker
05. august 2004 - 17:02 #1
hvilken xl-version ?
Avatar billede bak Forsker
05. august 2004 - 17:19 #2
nååe, her er en kode der gør at du ikke er nødt til at genopbygge pivoten
Fjerner missingitems på det aktuelle ark.

Sub CleanPivotItems()

    Dim pt As PivotTable, pf As PivotField, pi As PivotItem
    Dim booShowMsg As Boolean, mbxResult As VbMsgBoxResult, msg As String

    booShowMsg = True
    On Error GoTo ErrorHandler

    For Each pt In ActiveSheet.PivotTables
        For Each pf In pt.PivotFields
            For Each pi In pf.PivotItems
                If pi.RecordCount = 0 And pi.IsCalculated = False Then pi.Delete
            Next pi
        Next pf
    Next pt
    Set pi = Nothing
    Set pf = Nothing
    Set pt = Nothing
    Exit Sub

ErrorHandler:

    If booShowMsg Then
        msg = "Macro kunne ikke slette et emne." & vbCr
        msg = msg & "En grund kunne være at at den engang har været en del af en gruppering," & vbCr
        msg = msg & "eller at det (tom) " & vbCr
        msg = msg & "Click [CANCEL] for at undgå yderligere fejlmeddelelser."
        mbxResult = MsgBox(msg, vbExclamation + vbOKCancel, "Fejl ved sletning")
        booShowMsg = (mbxResult = vbOK)
    End If
    Resume Next
End Sub


hvis du bruger excel-XP eller xl2003 er denne bedst

Sub CleanPivotItems2()
'_______________________________________________________________________
' Note: Denne kode behøver kun at køre een gang.  Efter at .MissingItemsLimit er blevet sat til
' xlMissingItemsNone, vil man kunne nøjes med et alm. REFRESH for at fjerne "døde" emner.

    Dim pt As PivotTable

    For Each pt In ActiveSheet.PivotTables
        pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
        pt.PivotCache.Refresh
    Next pt

    Set pt = Nothing

End Sub
Avatar billede jpvj Nybegynder
05. august 2004 - 20:21 #3
Det er Excel 2003 DK SP1.

Jeg tester i morgen på arb.

Jeg er meget taknemmelig, hvis det er så let!
Avatar billede bak Forsker
06. august 2004 - 13:13 #4
Husk lige at refreshe pivoten inden du kører makroen
Avatar billede bak Forsker
17. august 2004 - 22:16 #5
har du fået checkket ?
Avatar billede jpvj Nybegynder
22. august 2004 - 16:04 #6
Sorry - har glemt spm. Det fungerer som en drøm. Smid et svar :-)
Avatar billede bak Forsker
22. august 2004 - 16:54 #7
oki... bedre sent end aldrig :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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