Vba 获取特定单元格的数据透视字段值
我有一个来自ssas连接的数据透视表。表中使用了多个数据透视字段。对于本例,假设它们是大小、颜色和位置。我的目标是编写一些vba,在其中传递单元格范围并获取相应数据透视字段的值 例如,如果我通过Vba 获取特定单元格的数据透视字段值,vba,excel,pivot-table,Vba,Excel,Pivot Table,我有一个来自ssas连接的数据透视表。表中使用了多个数据透视字段。对于本例,假设它们是大小、颜色和位置。我的目标是编写一些vba,在其中传递单元格范围并获取相应数据透视字段的值 例如,如果我通过B6的单元格范围,我想知道该单元格来自大小为1的color2中的location2。如果我通过范围B8我会得到位置1、颜色3、尺寸1等 以下是我目前能做的。我可以得到这个单元格的公式值。以下是B6的结果:GETPIVOTDATA(“[Measures].[myValues]”,$A$1,“[d size
B6的单元格范围,我想知道该单元格来自大小为1的color2中的location2。如果我通过范围B8
我会得到位置1、颜色3、尺寸1等
以下是我目前能做的。我可以得到这个单元格的公式值。以下是B6的结果:GETPIVOTDATA(“[Measures].[myValues]”,$A$1,“[d size].[size]”,“[d size].[Size1]”,“[d color].[color]”,“[d color].[Color2]”,“[d location].[location]”,“[d location].[location].[location].[location].[location].[location2]”,
使用此代码:
Function xxx(ByVal xyz As Range) As Variant
xxx = xyz.Formula
End Function
Sub blah()
MsgBox (xxx(ActiveWorkbook.Sheets("Sheet1").Range("D13")))
End Sub
With Worksheets("Sheet1").PivotTables(1)
For i = 1 To .PivotFields.Count
MsgBox .PivotFields(i).Name
Next
End With
我还可以循环数据透视字段并获取它们的名称(但我不知道如何获取它们的值)[Measures].[myValues]
,[d size].[size]
等等。。。使用此代码:
Function xxx(ByVal xyz As Range) As Variant
xxx = xyz.Formula
End Function
Sub blah()
MsgBox (xxx(ActiveWorkbook.Sheets("Sheet1").Range("D13")))
End Sub
With Worksheets("Sheet1").PivotTables(1)
For i = 1 To .PivotFields.Count
MsgBox .PivotFields(i).Name
Next
End With
我现在的问题是,如何获取特定单元格的这些数据透视字段的值。我希望能够发送B6
并返回,或者访问:location2
,Color2
,Size1
编辑:
越来越近。。。现在,我可以循环遍历每个字段并获得它们的名称和值,如[d size].[size]&[Size1]
等,但现在我只想获得Size1
或[Size1]
的值:
Sub Test()
Dim iRange As Variant
iRange = ActiveCell.Address
FieldPicker (iRange)
End Sub
Function FieldPicker(targetCell As Variant) As Variant
With Range(targetCell).PivotCell
For i = 1 To .RowItems.Count
MsgBox .RowItems(i).SourceName
Next
End With
End Function
根据RoryA的回答改编如下:
代码中有一个bug。第一个if
应具有strOut=“非透视单元格”
。此函数将返回[d size].[size]:[d size].[size]&[Size1]
等。因此它与我的一些尝试类似。它确实内置了所有的错误处理,这非常好,但我想更进一步,只获取Size1
或[Size1]
等的值。我只发布了这个答案(这是RoryA文章的直接副本),作为如何循环各种类别值的指针(在与特定“值”关联的行项目
和列项目
)单元格。如果您想要的是一种通用方法,那么您可以传入一个字段名,并在找到具有您要查找的名称的字段后从代码中返回一个值。嘿,这是一个很好的功能+1。现在是我最初问题中最难解决的部分。从您的更新中,我仍然得到[d size].[size]&[Size1]
vba是否允许我在不解析字符串的情况下仅获取该字符串的结尾?
这确实是我想要返回的值。我想我没有遵循您真正想要做的。您可以使用我发布的代码来获取与特定值单元格关联的特定字段的值。我没有遵循您的意思n通过“解析”字符串或从中获得[d size].[size]&[Size1]
的确切位置。您发布的代码返回[d size].[size]&[Size1]
我想让它返回Size1
。我已经知道Size1
来自d size
维度。你知道vba能否在和之后给我这个值吗?