Excel 2013 VBA 透视 Table Select 仅前 5 项有联系
Excel 2013 VBA Pivot Table Select Only Top 5 Items With Ties
我正在尝试找到一种方法来使用 Excel 2013 VBA 仅 select 数据透视 table 中的前 5 项。我尝试了以下代码行,试图只显示前 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 名列表中的任何值都没有值关系,则下面的代码可以正常工作。使用我们的数据集,我们总是会在前 5 名列表中并列。
With Workbooks(cFileName).Worksheets("sheet1")
.PivotTables(1).PivotFields("Field1").PivotFilters.Add2
xlTopCount, .PivotTables(1).PivotFields("Field1"), 5
End With
编辑:
数据透视表 table 列表将显示某些项目被选中,但没有数据与这些值相关联。基于这些枢轴 tables 的图表是空白的,下面的代码 selects 只是字段中底部的 5 个值,因为它打算在其原始 post 中执行。
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
我终于弄明白了。以防万一其他人想知道,最好的方法是在您录制宏时:
- Select 您希望开始查看数据的单元格。在我的例子中是 "B10"。这对其他人来说会有所不同,具体取决于您的枢轴 table 数据所在的位置。
- 按 SHIFT + END + DOWN ARROW 键向下移动到使用范围的底部。
- Select 要隐藏的所有行。
- 右键单击要隐藏的值。
- Select "Filter" 来自列表。
- 点击 "Hide selected items"。
下面是我以后要参考的代码
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
我正在尝试找到一种方法来使用 Excel 2013 VBA 仅 select 数据透视 table 中的前 5 项。我尝试了以下代码行,试图只显示前 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 名列表中的任何值都没有值关系,则下面的代码可以正常工作。使用我们的数据集,我们总是会在前 5 名列表中并列。
With Workbooks(cFileName).Worksheets("sheet1")
.PivotTables(1).PivotFields("Field1").PivotFilters.Add2
xlTopCount, .PivotTables(1).PivotFields("Field1"), 5
End With
编辑: 数据透视表 table 列表将显示某些项目被选中,但没有数据与这些值相关联。基于这些枢轴 tables 的图表是空白的,下面的代码 selects 只是字段中底部的 5 个值,因为它打算在其原始 post 中执行。
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
我终于弄明白了。以防万一其他人想知道,最好的方法是在您录制宏时:
- Select 您希望开始查看数据的单元格。在我的例子中是 "B10"。这对其他人来说会有所不同,具体取决于您的枢轴 table 数据所在的位置。
- 按 SHIFT + END + DOWN ARROW 键向下移动到使用范围的底部。
- Select 要隐藏的所有行。
- 右键单击要隐藏的值。
- Select "Filter" 来自列表。
- 点击 "Hide selected items"。
下面是我以后要参考的代码
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