Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Power Pivot表-在报告筛选器中的字段之间循环_Excel_Powerpivot_Vba - Fatal编程技术网

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