如何在excel数据透视表中显示“(空白)”以外的所有项目?

时间:2016-09-16 18:48:28

标签: vba pivot-chart

当录制取消选择“(空白)”项目时,我会明确提及所有项目。

ActiveChart.PivotLayout.PivotTable _
.PivotFields("[Table1].[Field1].[Field1]").VisibleItemsList = _
                                           Array("[Table1].[Field1].&[Item1]", _
                                                 "[Table1].[Field1].&[Item2]", _
                                                 "[Table1].[Field1].&[Item3]", _
                                                 "[Table1].[Field1].&[Item4]", _
                                                 "[Table1].[Field1].&[Item5]", _
                                                 "[Table1].[Field1].&[Item6]")

但我不能提及这些项目,因为我事先并不知道它们(它们位于数据模型中)。

代码应该是:

With ActiveChart.PivotLayout.PivotTable 
    .PivotFields("[Table1].[Field1].[Field1]").VisibleItemsList = Array("")
    .PivotFields("[Table1].[Field1].[Field1]").PivotItems("(blank)").Visible = False
End With 

编辑:显然,.PivotItems("(blank)").Visible = False应该正是我需要的,但它不是......(运行时'1004':无法获取PivotField类的PivotItems属性

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案/解决方法:

    Dim PivItem            As PivotItem
    Dim PivFieldsArray()   As Variant
    Dim i                  As Integer

    With ActiveChart.PivotLayout.PivotTable.PivotFields("[Table1].[Field1].[Field1]")
        For Each PivItem In .PivotItems
            ReDim Preserve PivFieldsArray(0 To i)
            If PivItem.name <> "[Table1].[Field1].&" Then
                PivFieldsArray(i) = PivItem.name
                i = i + 1
            End If
        Next
        .VisibleItemsList = PivFieldsArray
    End With