Excel从OLAP筛选器获取检查值

时间:2019-06-28 16:57:00

标签: excel vba pivot-table

我想从OLAP数据透视表中的过滤器中获取选中的项目。

我知道我可以使用以下代码来掌握该字段,但是我看不出如何获取数据以及如何仅获取已检查的项目。

Sub Button1_Click()

 ActiveSheet.PivotTables("PivotTable1").PivotFields ("[PA Product].[Commodities].[Commodity Name]") 

End Sub

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过PivotField.VisibleItemsList获得OLAP筛选器的所有选中项。

如果选中了“选择多个项目”并且未选中所有项,则此数组仅包含值-在您的示例中就是这种情况。

因此,您可以从以下简短版本开始:

Private Sub GetVisibleItemsOfOLAPFilterVersion1()
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim i As Long

    Set pt = ActiveSheet.PivotTables(1)
    Set pf = pt.PageFields(1)
    For i = LBound(pf.VisibleItemsList) To UBound(pf.VisibleItemsList)
        Debug.Print pf.VisibleItemsList(i)
    Next i
End Sub

下面的详细版本显示了如何首先检查以上条件:

Private Sub GetVisibleItemsOfOLAPFilterVersion2()
    Dim pt As PivotTable
    Dim cf As CubeField
    Dim pf As PivotField
    Dim i As Long

    Set pt = ActiveSheet.PivotTables(1)
    For Each cf In pt.CubeFields
        If cf.Orientation = xlPageField Then
            If cf.EnableMultiplePageItems And Not cf.AllItemsVisible Then
                For Each pf In cf.PivotFields
                    For i = LBound(pf.VisibleItemsList) To UBound(pf.VisibleItemsList)
                        Debug.Print pf.VisibleItemsList(i)
                    Next i
                Next pf
            End If
        End If
    Next cf
End Sub