首页 > 解决方案 > 按单元格值过滤数据模型数据透视表

问题描述

我尝试了许多不同的解决方案,比如这里给出的解决方案,但没有一个对我有用。

我有以下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("C1")) Is Nothing Then Exit Sub

    Dim pt As PivotTable
    Dim Field As PivotField
    Dim NewCat As Integer '<-I have tred String or not defining it at all

    Set pt = Worksheets("Sheet1").PivotTables("myPivot")
    Set Field = pt.PivotFields("[Test].[Category].[Category]")
    NewCat = Worksheets("Sheet1").Range("C1").Value

     With pt
        Field.ClearAllFilters
        Field.CurrentPage = NewCat '<- Here I have tried many variations
        pt.RefreshTable
    End With

End Sub

我主要是在线路上收到 1004 错误Field.CurrentPage。我试图过滤的“类别”变量是由整数组成的。整个数据透视表基于数据模型。我不知道是什么问题,求助!

标签: excelvbapivot-table

解决方案


我终于想通了。问题是 NewCat 值必须是 format [QueryName].[Category].&[CategoryValue]。我猜这与数据模型上使用的 Pivot 有关。

所以我使用了一个简单的字符串连接来以正确的格式获取我的值:

myValue = Worksheets("Sheet1").Range("C1").Value
leftP = "&["
rightP = "]"
NewCat = "[Test].[Category]." & leftP& myValue & rightP

希望这可以节省其他人的时间...


推荐阅读