【发布时间】:2019-03-13 11:58:54
【问题描述】:
我正在尝试将数据透视表的数据值复制到另一个工作表中,但是因为我在“隐藏”一些行标签的数据透视表中进行过滤,所以当我遍历数据透视字段的数据透视项时在行标签中,它比实际应该循环的次数多。为了说明我的问题,这里是我使用的代码。
Sub Prob()
Dim Ptable1 as PivotTable
Dim PField as PivotField
Dim PField2 as PivotField
Dim NumOfPItem as Long
Dim PItem as PivotItem
Dim aCell as Range
Set Ptable1 = ActiveSheet.PivotTables("PivotTable1")
With Ptable1.PivotFields("DataCol5")
.CurrentPage = "12/2/2018"
End With
PField = Ptable1.PivotFields("DataCol1")
NumOfPItem = PField.PivotItems.Count
For each PItem in PField.PivotItems
'Some code to get a cell reference in another worksheet
'and then some code to copy the value from the pivot table to cells.
aCell.Offset(0,1).Value = PField2.PivotItems("XX01").DataRange.Cells(PItem.Position,1)
Next PItem
End Sub
我只是准备了一些简单的东西,以便抓住我面临的主要问题。
未过滤的数据透视表:
场地安排:
这是过滤后的数据透视表。
我尝试循环遍历使用 PivotItems.Visible 属性可见的枢轴项目,但这些项目都是可见的,因此循环遍历存在的每个枢轴项目。导致我的下一个屏幕截图。
正如所见,所有项目都被选中,因此当从枢轴字段循环遍历所有“可见”枢轴项目时,它将循环遍历 5 次,因为有 5 个不同的项目。然而,在这个例子中,在我进行一些过滤之后,我最终只得到了 1 个行标签,所以它应该只针对数据透视表中存在的内容循环一次。我在这里做错了什么?
【问题讨论】: