Wie schließe ich zwei Elemente aus einer SSAS-Pivot-Tabellenspalte?
#1
Ich versuche, eine Spalte in einer SSAS-Cube-Pivot-Tabelle zu filtern. Ich möchte nur zwei identifizierte Werte aus dieser Spalte ausschließen und alle restlichen Werte in dieser Spalte auswählen.
Irgendwie schließt mein Code viele andere Werte aus und wählt nur wenige andere aus. Irgendwie zufällig.
Kann mir jemand helfen und mir sagen, was ich falsch mache? Hier ist der Code:
 
    ActiveSheet.PivotTables("PivotTable1").PivotFields( _
        "[MasterData Publisher Groups].[Publisher Group].[Publisher Group]"). _
        ClearAllFilters
    Range("E8").Select
   
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim pi As PivotItem
    Dim includeItems As Collection
    Dim item As Variant
    Dim i As Long
    Dim excludeList As Variant
    Dim visibleItemsArray() As Variant
    Dim itemCount As Long

    ' Set your PivotTable and PivotField
    Set pt = ActiveSheet.PivotTables("PivotTable1")
    Set pf = pt.PivotFields("[MasterData Publisher Groups].[Publisher Group].[Publisher Group]")

    ' Refresh the PivotTable to ensure it has the latest data
    pt.RefreshTable

    ' Define the items to exclude
    excludeList = Array("[MasterData Publisher Groups].[Publisher Group].&[30118]", _
                        "[MasterData Publisher Groups].[Publisher Group].&[27123]")

    ' Initialize the collection to store items to include
    Set includeItems = New Collection

    ' Loop through all items in the pivot field
    For Each pi In pf.PivotItems
        ' Check if the item is in the exclude list
        Dim shouldExclude As Boolean
        shouldExclude = False
       
        For i = LBound(excludeList) To UBound(excludeList)
            If pi.Name = excludeList(i) Then
                shouldExclude = True
                Exit For
            End If
        Next i

        ' Add the item to includeItems if it should not be excluded
        If Not shouldExclude Then
            includeItems.Add pi.Name
        End If
    Next pi

    ' Convert the collection to an array
    itemCount = includeItems.count
    ReDim visibleItemsArray(1 To itemCount)
    For i = 1 To itemCount
        visibleItemsArray(i) = includeItems(i)
    Next i

    ' Clear existing filters
    pf.ClearAllFilters

    ' Set the VisibleItemsList property
    pf.visibleItemsList = visibleItemsArray
Die Liste der Elemente ist SEHR lang, deshalb kann ich in einer VBA-Anweisung nicht angeben, welche Elemente ausgewählt werden sollen. Als ich anfangs versuchte, alle sichtbaren Elemente in die Liste aufzunehmen, erhielt ich einen Laufzeitfehler, dass die Anweisung zu lang sei. Daher gehe ich diesen Weg, um die excludeList und includeList zu erstellen.
Wenn ich beim Debuggen den Mauszeiger über pi.Name in der obigen LBound-/RBound-Schleife bewege, hat der Wert die Form „[MasterData Publisher Groups].[Publisher Group].&[30118]“ und nicht den tatsächlichen Ausgabenamen (z.B "Test Name Publisher Here"), den ich in der Excel-Pivot sehe. Ist das normal? Vielleicht funktioniert der Code deshalb nicht wie er sollte?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste