【问题标题】:Filtering row labels in pivot table using vba使用vba过滤数据透视表中的行标签
【发布时间】:2013-05-15 14:20:30
【问题描述】:

我搜索了很多论坛,但仍然没有找到答案:

我正在尝试过滤从 1 到 10 不等的行标签,以便只显示 5 和 10。

我编写了以下代码,但它产生错误 1004“无法获取数据透视表类的 PivotFields 属性”。

ActiveWorkbook.Sheets("SideCalculations-KPIs").Activate
With ActiveSheet.PivotTables("PivotTable1").PivotFields("ToStateId")
    .ClearAllFilters
    .PivotItems("5").Visible = True
    .PivotItems("10").Visible = True
End With

提前致谢

【问题讨论】:

  • 要检查数据透视域的名称,在调试/立即窗口中执行此代码:?Sheets("SideCalculations-KPIs").PivotTables("PivotTable1").PivotFields(1).name - 可能是名称 ToStateId 错误

标签: excel powerpivot vba


【解决方案1】:

错误中明确提到,PivotField的名称不正确。

可能是透视字段的名称已从“ToStateId”更改。为了找到合适的名称,请运行以下代码:

For each pField in ActiveSheet.PivotTables("PivotTable1").PivotFields
     Debug.Print pField.Name
Next pField

转到 VBA 编辑器,按 Ctrl+G,它将打开即时窗口。它将显示所有可用的数据透视字段。然后请使用正确的数据透视字段并尝试。

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    dim pvItem as pivotitem 
    For Each pvtitem In Sheets("SideCalculations-KPIs").PivotTables("PivotTable1").PivotItems
        if (pvitem.name="5" or pvitem.name="10") then
            pvitem.visible=true
        else
            pvitem.visible=false
        end if
    Next 
    

    【讨论】:

    • 非常感谢 Philip,但是第 4 行出现了语法错误,您能猜到原因吗?谢谢!
    • 现在试试,缺少一个括号
    • 感谢帮助,我已经尝试过了,但错误仍然存​​在
    • 10.. 之后缺少的引号应该是pvtem.name="10") then
    • 现在我遇到运行时错误 438:“对象不支持此属性或方法”
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2018-07-13
    • 2012-06-19
    • 2021-07-01
    • 2015-06-30
    • 1970-01-01
    相关资源
    最近更新 更多