VBA - Pivot filter er meget langsom - udregner for hver filtreret item - hvordan undgås dette?
Hej!Jeg har et Excel regneark, hvor jeg har en større pivottabel. Tabellen skal med en macro kunne filtreres på en liste af kontonumre. Jeg har forsøgt at filtrere på 2 forskellige måder (der begge virker, men er meget langsomme), således at kun en bestemt række konti er stat til "visible". Jeg har forsøgt med at lave en liste i et ark og give den et dynamisk named range, som der så filtreres fra (medtode #1).
Jeg har ligeledes forsøgt a lave et hardcoded arry direkte i min kode (metode #2), men begge har den MEGET irrieterende funktion, at pivottabellen bliver genberegnet for hver arry/liste item - og der er +50 items. Er der en måde at få sat disse filtre samtidig, for derefter at lave en enkelt genberegning??
Jeg har forsøgt med nedenstående 2 macros:
Metode #1:
Sub Test()
Dim PI As PivotItem
With Worksheets("Graf_kreditorgæld_001").PivotTables("pivottabel1").PivotFields("GL_AccNo")
.ClearAllFilters
For Each PI In .PivotItems
PI.Visible = WorksheetFunction.CountIf(Range("GældsKontiRange"), PI.Name) > 0
Next PI
End With
End Sub
I denne kaldes der et named range i andet worksheet
Metode#2:
Private Sub PivotFilterTest()
Dim pf As PivotField
Dim myArray() As Variant
Dim i As Long
myArray = Array("42270", "62515", "62520", "72110", "72120", "72140", "72150", "72180", "72181", "72185", "72210", "72220", "72230", "72250", "72260", "72270", "72275", "72280", "72285", "72310", "72315", "72320", "72330", "72340", "73110", "73120", "73121", "73125", "73130", "73131", "73133", "73134", "73140", "73150", "73155", "73160", "73610", "73615", "73620", "73625", "73630", "73635", "73640", "73645", "73650", "73655", "76210", "76220", "76230", "76235", "76240", "76250", "76260", "76265", "76989")
Set pf = Worksheets("Graf_kreditorgæld_001").PivotTables("pivottabel1").PivotFields("GL_AccNo")
With pf
.ClearManualFilter
.EnableMultiplePageItems = True
For i = LBound(myArray) To UBound(myArray)
.PivotItems(myArray(i)).Visible = True
Next i
End With
End Sub
Her er kontonumre kodet direkte ind i et array.
ER der nogen der har en idet hvordan man kan sætte filtret FØR der genberegnes??