我在尝试仅将数据透视表中显示的数据透视表项添加到组合框时遇到了困难。我尝试使用过滤器的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
请告知
谢谢!
答案 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
数据:强>
数据透视(选定类别B
过滤值):
<强>结果:强>
当然,这很容易,因为我只有一列设置,所以.DataBodyRange
默认只是那个。将它应用于更大范围/数据透视表,我留给您。 ;)
希望这有帮助。