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