【发布时间】:2016-01-15 04:10:28
【问题描述】:
我正在尝试编写一些代码,这些代码将在我突出显示数据透视表的值区域中的一个单元格后返回行、列和页面字段和项。例如,如果我选择一个包含 1000 美元值的单元格,我想使用代码来拉取行字段和项目(例如,字段是部门,项目是财务)、列字段和项目(例如,字段为客户,项目为广告)和页面字段和项目(例如,字段为公司,项目为 XYZ, Inc.)。
这看起来应该很简单,因为当您将鼠标悬停在数据透视表中的任何单元格上时,它会在上下文框中显示向下钻取信息,但是,我很难操作数据透视表对象因为在网上或微软似乎没有太多关于它们的文章。
看起来我正在寻找一个或多个 pivotline 对象,但我不知道如何使用它。
我最初采用这种方法并且效果很好,直到我意识到行字段的索引不一定是它在行字段中的位置,所以我不得不放弃它。
Sub ActualDetailDrill()
'after sub is completed, make this sub called when a cell in a pivot table is double-clicked.
Dim NumOfRowItems As Integer
Dim NumOfColItems As Integer
Dim NumOfPageFields As Integer
Dim Field As PivotField
Dim ActualDrillActiveCell As Range
Set ActualDrillActiveCell = Sheets("ActualDrill SQL Build").Range("A1")
NumOfRowItems = ActiveCell.PivotCell.RowItems.Count
i = 1
Do Until i > NumOfRowItems
ActualDrillActiveCell.Value = ActiveCell.PivotTable.RowFields(i).Name
ActualDrillActiveCell.Offset(0, 1).Value = ActiveCell.PivotCell.RowItems(i).Name
ActualDrillActiveCell = ActualDrillActiveCell.Offset(1, 0)
i = i + 1
Loop
End Sub
任何帮助将非常非常感激。这是我正在进行的一个大型项目的最后一步之一,这将对我工作的公司非常有帮助。
【问题讨论】:
-
谢谢道格。这非常有帮助,但我正在尝试与此链接中讨论的相反。本文假设您知道要为其拉回数据的字段和项目名称。我已经知道数据范围(一个单元格而不是多个单元格)并且想要该数据范围的字段(列、行和页面)和项目。由于作者 Jon 似乎熟悉数据透视表的代码,因此他会是一个很好的人问这个问题吗?谢谢!
标签: excel pivot-table vba