如何仅显示数据透视表上的过滤器

时间:2013-12-27 06:56:19

标签: excel vba excel-vba

我在尝试仅将数据透视表中显示的数据透视表项添加到组合框时遇到了困难。我尝试使用过滤器的visible属性,但它不起作用。例如,我的数据按国家/地区和城市排序。城市当然是特定国家的子集,但它们都是两个不同的枢轴领域。枢轴先前已按国家/地区排序,并且只有少数城市保留在数据透视表中。但是,如果我在城市上使用visible属性,则所有透视项都将可见。如何限制我添加到组合表中的城市。

For Each item In Sheets("Pivot").PivotTables(1).PivotFields("Cities").PivotItems
        If item.Visible Then
            Sheets("Dashboard").ComboBox1.AddItem item.Name
        End If
    Next item
End If

请告知

谢谢!

1 个答案:

答案 0 :(得分:0)

使用.DataBodyRange属性。这将删除所有标题,仅获取存在于范围内的数据。由于它只排除列标题,因此请检查以排除Grand Total

由于.DataBodyRange属于Range类型,因此您可以使用.Cells(x,y)来定位特定的列或行(假设您的数据透视表中显示了多个列)。请参阅下面的代码和屏幕截图。

以下代码:

Sub GetVisibleCells()
    Sheets("Sheet4").ComboBox1.Clear
    For Each Item In Sheets("Sheet4").PivotTables(1).DataBodyRange
            If Item <> "Grand Total" Then
                Sheets("Sheet4").ComboBox1.AddItem Item
            End If
    Next Item
End Sub

数据:

enter image description here

数据透视(选定类别B过滤值):

enter image description here

<强>结果:

enter image description here

当然,这很容易,因为我只有一列设置,所​​以.DataBodyRange默认只是那个。将它应用于更大范围/数据透视表,我留给您。 ;)

希望这有帮助。