下面是大量数据及其数据透视表的简单表示
数据
+------+------+ | 项目 | 数据 | +------+------+ | ABC | S | | ABC | 你 | | ABC | S | | ABC | 你 | | ABC | 你 | | XYZ | U | | XYZ | U | | XYZ | U | | XYZ | U | | XYZ | U | +------+------+
当我们将数据透视表应用于此数据时,
列标签 - 项目行
标签 - 数据
值 - 数据
我们得到,
+-------+---+---+-------+ |项目 | S |乌 |总计 | +-------+---+---+-------+ | 美国广播公司 | 2 | 3 | 5 | | XYZ | | 5 | 5 | | 总计 | 2 | 8 | 10 | +-------+---+---+-------+
我们如何才能显示下面的结果,
使用列标签上的值过滤器和标签过滤器的组合
,而不使用行标签过滤器(这是不可行的,因为原始数据有太多的行标签)
+-------+---+---+-------+ |项目 | S |乌 |总计 | +-------+---+---+-------+ | 美国广播公司 | 2 | 3 | 5 | | 总计 | 2 | 3 | 5 | +-------+---+---+-------+
谢谢!
答案1
我认为您也可以在 Excel 2010 中完成这个很好的过滤(而我使用的是 2013)。
更新
这段代码可以完成以下任务:
Sub hide_pivot_items()
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("PivotTable2")
Dim cell As Range
For Each cell In pt.PivotFields("Data").PivotItems("S").DataRange
If cell.Value = vbNullString Then
'hiding row
pt.PivotFields("Proj").PivotItems(ThisWorkbook.ActiveSheet.Cells( _
cell.Row, pt.PivotFields("Proj").DataRange.Column).Value).Visible = False
End If
Next
End Sub
只需使用您的实际数据透视表名称,而不是PivotTable2
第三行。