Excel Power Pivot表-在报告筛选器中的字段之间循环
免责声明:此问题已在中发布,但由于我没有得到任何答复(令人惊讶),因此我也在此处交叉发布。在尝试回答此问题之前,您可能需要检查该链接。如果在该链接中发布了解决方案,我不希望您浪费时间:) 问题:我想找出报告筛选器中的字段名。因此,我正在寻找Excel Power Pivot表-在报告筛选器中的字段之间循环,excel,powerpivot,vba,Excel,Powerpivot,Vba,免责声明:此问题已在中发布,但由于我没有得到任何答复(令人惊讶),因此我也在此处交叉发布。在尝试回答此问题之前,您可能需要检查该链接。如果在该链接中发布了解决方案,我不希望您浪费时间:) 问题:我想找出报告筛选器中的字段名。因此,我正在寻找RegionCountryName,Cityname和ProductKey。报告过滤器是动态的,可以更改 屏幕截图: 我尝试了什么:我已经检查了电源轴的每个属性,但没有找到可以让我在电源轴字段中循环的属性 我甚至尝试过这段代码,但它显然在Set pf=pt.
RegionCountryName
,Cityname
和ProductKey
。报告过滤器是动态的,可以更改
屏幕截图:
我尝试了什么:我已经检查了电源轴的每个属性,但没有找到可以让我在电源轴字段中循环的属性
我甚至尝试过这段代码,但它显然在Set pf=pt.PageFields(1)
错误屏幕截图
那么我错过了什么?还是我应该采取不同的方法
编辑
如果有人想试用它,可以从我正在查看的
清单
工作表下载该文件。经过一些测试,似乎可以通过列出数据透视字段并检查其方向属性的值是否等于XlPageField来获得页面筛选字段列表。请尝试以下代码:
Sub Test()
Dim pt as PivotTable
Dim pf as PivotFields
set pt=Sheets("test").PivotTables(1)
For each pf in pt.PivotFields
If pf.Orientation=xlPageField Then
Debug.Print pf.Name
End If
Next pf
End Sub
希望这能有所帮助自从最初的问题被提出已经两年多了,但我仍然找不到满意的答案 但我找到了一条路:——) 您也可以通过切片器更改PowerPivot表 我使用此代码更改文件中选定的月份:
Private Sub SpinButton21_SpinDown()
Dim SC As SlicerCache
Dim SL As SlicerCacheLevel
Dim SI As SlicerItem
Set SC = ActiveWorkbook.SlicerCaches("Slicer_Month4")
Set SL = SC.SlicerCacheLevels(1)
'get the current item number
c = 1
For Each SI In SL.SlicerItems
If SI.Selected = True Then
MONTHindex = c
Exit For
End If
c = c + 1
Next SI
If MONTHindex = 1 Then
MONTHindex = SC.SlicerCacheLevels.Item.Count + 1
End If
SC.VisibleSlicerItemsList = SL.SlicerItems(MONTHindex - 1).Name
End Sub
我不是专业人士,但我希望这会有所帮助。如果您在realce_net的帖子中将pt.pivotfields更改为pt.pagefields,它应该会运行。正如微软的参考资料所说,pagefields是在Office 2013中引入的
Dim pt As PivotTable
Dim pf As PivotFields
Set pt = Sheets("test").PivotTables(1)
For Each pf In pt.PageFields
If pf.Orientation = xlPageField Then
Debug.Print pf.Name
End If
Next pf
这只是一个简单的问题,但是为什么
PivotField.PivotFilters
属性在这里不起作用呢?感谢您对此进行深入研究pf.PivotFilters.Count
给我0:)谢谢你的回答,但这不是一个正常的Pivot。这是一个权力支点。pt.PivotFields中每个pf的行给了我一个运行时错误13,类型不匹配
。如果你想用它做实验,你可以从“对不起,它没用”下载,从我这里和那里读到的,powerpivots似乎使用了CubeFields,但我无法测试它。你试过了吗?我想你忘了提到linksHi,这里有一个链接:
Dim pt As PivotTable
Dim pf As PivotFields
Set pt = Sheets("test").PivotTables(1)
For Each pf In pt.PageFields
If pf.Orientation = xlPageField Then
Debug.Print pf.Name
End If
Next pf