2017-08-16 565 views
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 

回答

0

我終於想出了這一個。要做到這一點,最好的辦法就是在其他人想知道的時候記錄一個宏:

  1. 選擇您想要開始查看數據的單元格。在我的情況下,它是「B10」。這對於其他人來說會有所不同,具體取決於數據透視表數據的位置。
  2. 按下SHIFT + END +向下箭頭鍵向下到使用範圍的底部。
  3. 選擇所有要隱藏的行。
  4. 右鍵單擊要隱藏的值。
  5. 從列表中選擇「過濾器」。
  6. 點擊「隱藏選定的項目」。

以下是我將來會參考的代碼。

Application.Goto reference:=Workbooks("File").Sheets("Sheet1").Range("B10") 
If IsEmpty(Range("B11").value) = False Then 
Range("B10").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Delete 
Else 
End If