【问题标题】:Excel Pivot Table - ordinal position of PivotItems does not match what is diaplayed on the screenExcel 数据透视表 - 数据透视表的序号位置与屏幕上显示的不匹配
【发布时间】:2011-02-28 18:09:31
【问题描述】:

比较时: PivotTable.PivotFields("field1").PivotItems
到:
PivotTable.PivotFields("field2").PivotItems

从 VBA 消费时项目的序号位置与屏幕上显示的不匹配。

请注意,在下面的代码中,我已将两个 PivotFields 显式设置为可见(xlColumnField),并将其中一个的位置设置为 1。

在屏幕上,两个 PivotField 中每个 PivotItems 的位置相应地排列(显然)。但是在这种状态下,通过 VBA 检查项目时,每个集合中的序号位置以及 .Position 属性与屏幕上显示的不同。

有没有办法正确访问这些,以便我可以在多个 PivotFields 中的各个 PivotItems 之间找到正确的匹配项? (或者其他方式?)

Sub debugPivotTableFieldData(pt As PivotTable)
    Dim aPivotField As PivotField
    Dim aPivotItem As PivotItem
    Dim iField As Integer

    Debug.Print pt.PivotFields("Airport").Orientation
    Debug.Print pt.PivotFields("Name").Orientation

    pt.PivotFields("Airport").Orientation = XlPivotFieldOrientation.xlColumnField
    pt.PivotFields("Name").Orientation = XlPivotFieldOrientation.xlColumnField
    pt.PivotFields("Airport").Position = 1

    Debug.Print "DEBUG PIVOT TABLE: " & pt.Name
    For iField = 1 To pt.PivotFields("Airport").PivotItems.Count
        Debug.Print pt.PivotFields("Airport").PivotItems(iField) & " - " & pt.PivotFields("Airport").PivotItems(iField).Position
    Next
    For iField = 1 To pt.PivotFields("Name").PivotItems.Count
        Debug.Print pt.PivotFields("Name").PivotItems(iField) & " - " & pt.PivotFields("Name").PivotItems(iField).Position
    Next
    For iField = 1 To pt.PivotFields("Airport").PivotItems.Count
        Debug.Print pt.PivotFields("Airport").PivotItems(iField) & " - " & pt.PivotFields("Name").PivotItems(iField)
    Next

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我有 95% 的把握就是这样。我认为集合中项目的序号位置与屏幕上显示的内容或每个元素的 .Position 值无关。

    因此,为了一次正确设置两个数据透视字段中数据透视项目的列位置,我用 PivotTable.PivotCache.Recordset 中的不同值(两个字段的)填充了 Scripting.Dictionary....然后,迭代字典项,您可以按名称访问每个数据透视字段中的 PivotItems 并设置它们的 .Position 以使它们具有匹配的排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2020-03-22
      相关资源
      最近更新 更多