VBA将透视滤镜设置为单选

时间:2015-05-19 20:19:41

标签: excel vba excel-vba pivot-table

从今天早些时候解决了我原来的问题 - 现在我的工作代码并没有像我一样产生完美的结果。简而言之,我循环遍历所有工作表并将所有枢轴设置为过滤为单个值。除非清除过滤器并显示所有内容,否则我不想要多个值。我的代码显示了所需的数据,但数据透视表上的过滤器显示为多个值(选中了一个值)。如何将其作为单个选项对待,并在数据透视过滤器上显示单个值?

Sub Loop_Complex_bkup()
Dim wks As Worksheet, strName As String, pvt As PivotTable, strPvtName As String

For Each wks In Worksheets
strName = wks.Name
For Each pvt In wks.PivotTables
    strPvtName = pvt.Name
    With Sheets(strName).PivotTables(strPvtName).PivotFields("OrderSubType")
        .ClearAllFilters
        For Each PivotItem In .PivotItems
            If PivotItem = "Complex" Then PivotItem.Visible = True
            If PivotItem <> "Complex" Then PivotItem.Visible = False
        Next
    End With
Next
Next

Set wks = Nothing
Set pvt = Nothing

End Sub

3 个答案:

答案 0 :(得分:1)

由于我有一个类似的问题我终于解决了,我决定发布我找到的解决方案给任何仍在搜索的人。我使用的代码是:

With Sheets(strName).PivotTables(strPvtName).PivotFields("OrderSubType")
    .ClearAllFilters
    .CurrentPage = "Complex"
End With

.CurrentPage选择一个过滤条目,默认为.EnableMultiplePageItems = False

我也不确定过滤器显示如何在通过切片器连接的数据透视表之间受到影响,所以我建议在这些表之间设置相同的EnableMultiplePageItems

注意:对于有同样问题的人,除了想要.EnableMultiplePageItems = True

我必须使用以下代码来修复过滤器显示。

With Sheets(strName).PivotTables(strPvtName).PivotFields("OrderSubType")
    .ClearAllFilters
    .CurrentPage = "Complex"
    .EnableMultiplePageItems = True

    For Each PI In .PivotItems
        If PI.Name <> "Complex" Then PI.Visible = False
    Next PI
End With

我知道它看起来多余,但在添加.CurrentPage.EnableMultiplePageItems行之前,显示屏无法自行修复。

答案 1 :(得分:0)

您正在寻找的命令是.EnableMultiplePageItems。如果我正确地理解了这个问题,那就是你要找的东西:

#time_range .ui-slider-handle:after {
content : attr(data-value);
position: absolute;
...
**line-height: 10px;**

答案 2 :(得分:0)

我已经尝试过并且可以进行以下工作:

带有工作表(strName)。数据透视表(strPvtName).PivotFields(“ OrderSubType”)。CurrentPage = _ “(全部)”

带有工作表(strName).PivotTables(strPvtName).PivotFields(“ OrderSubType”) .ClearAllFilters .EnableMultiplePageItems = False .CurrentPage =“复杂”

结尾为