使用VBA宏从数据透视表中选择一个字段

时间:2019-04-16 03:14:15

标签: excel vba pivot-table

我已经使用vba创建了数据透视表。在理解以下几点时,我需要帮助。

1:我想使用某些过滤器选择(复制)值(例如:标的价格 对于工具类型= OPTCUR,符号= GBPUSD)。基本上是VBA公式的替代方案

GETPIVOTDATA("Underlying_price",$C$4,"Instrument Type","OPTCUR","Symbol","GBPUSD")

2:我想设置“ show detail = True”,但不知道单元格详细信息,但如上所述。

3:当我们设置“ show detail = True”时,将打开一个新工作表。我想将此工作表分配给工作表类型的变量。

下面是我的数据透视表的SS。和TableName:=“ My_Pivot”

enter image description here

2 个答案:

答案 0 :(得分:3)

您使用PivotTable.GetPivotData得到了相关的单元格
Range.ShowDetail = True显示了具有此单元格详细信息的新工作表。
之后,新的ActiveSheet是通缉犯。

这是一个获取所需工作表的功能,其中包含指定数据字段的详细信息:

Private Function GetDetailSheet(pt As PivotTable, Val1 As String, Val2 As String) As Worksheet
    Dim myCell As Range
    With pt
        Set myCell = .GetPivotData(.DataFields(1).Name, _
            .RowFields(1).Name, Val1, _
            .RowFields(2).Name, Val2)
    End With
    myCell.ShowDetail = True
    Set GetDetailSheet = ActiveSheet
End Function

可以这样使用:

Private Sub Test()
    Dim ws as Worksheet
    Set ws = GetDetailSheet(ActiveSheet.PivotTables("My_Pivot"), "OPTCUR", "GBPUSD")
    ws.Name = "Details OPTCUR GBPUSD"
End Sub

答案 1 :(得分:0)

如果您不想使用(hideos)GETPIVOTDATA,那么有一个适合您的解决方案! 它称为CUBEVALUE。掌握起来有点困难,但是一旦完成,您的报表和数据透视表就会达到一个全新的水平。 看到这里:https://www.excelcampus.com/cubevalue-formulas/
是的,这是一篇很长的文章,但是绝对值得付出努力,因为它可以使您指向特定的数据点,而不是特定的单元格

一旦掌握,将VBA代码添加到“更改的”单元事件并更改特定工作表的可见性状态仅需几分钟。