0
我想找到一种方法来使用Excel 2013 VBA来选择数据透视表中的前5个项目。我曾尝试下面的代码行,试图只显示前5个项目:Excel 2013 VBA数据透视表只选择排名前5的项目
Dim c
dim i as long
Worksheets("sheet1").PivotTables(1).PivotFields ("field1")
ActiveSheet.PivotTables(1).PivotFields("field1").CurrentPage = "(All)"
With ActiveSheet.PivotTables(1).PivotFields("field1")
c = 5
For i = .PivotItems.Count To 1 Step -1
If (c > 0) Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
c = c - 1
Next
End With
这是宏录制使我并不起作用代码:
ActiveSheet.PivotTables("PivotTable5").PivotFilters. _
.PivotFields("field1") Add2 Type:=xlTopCount, _ DataField:=ActiveSheet.PivotTables("PivotTable5"). _
PivotFields("fied1"), Value1:=5
代码下面的工作正常,如果没有价值纽带的任何不在前五名单的价值。使用我们的数据集,我们总是会在我们的前5名单中获得联系。
With Workbooks(cFileName).Worksheets("sheet1")
.PivotTables(1).PivotFields("Field1").PivotFilters.Add2
xlTopCount, .PivotTables(1).PivotFields("Field1"), 5
End With
编辑: 数据透视表列表将显示一些项目,如被检查,但没有数据与这些值相关联。基于这些数据透视表的图表是空白的,下面的代码只选择字段中的最低5个值,因为它是在原始帖子中执行的。
With workbook.Worksheets("sheet1").PivotTables("PivotTable2").PivotFields
("Count of Description")
For Each WS In ActiveWorkbook.Worksheets
For Each pvt In WS.PivotTables
c = 5
For i = .PivotItems.Count To 1 Step -1
If (c > 0) Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
c = c - 1
Next
Next
Next
End With