筛选包含值的字段的数据透视表

时间:2013-03-21 23:09:31

标签: excel-vba filter pivot vba excel

我正在尝试过滤pivottable字段“name”,以仅显示标题中包含“AA5”的记录。

当我录制宏时,它似乎只取消选择不包含AA5的最新项目(使用false属性)。而不是使用AA5 = true属性。

但是,由于使用新数据不断更新数据透视表,因此第二次运行宏不会删除新添加的项目,因为代码已识别出哪些不显示,而不是显示哪个。

Sub Macro3()

    Range("A8").Select
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Name")
            With ActiveSheet.PivotTables("PivotTable1").PivotFields("Name")
        .PivotItems("Test:777:1").Visible = False
        .PivotItems("Test:777:2").Visible = False
        .PivotItems("Test:777:3").Visible = False

    End With

End Sub

2 个答案:

答案 0 :(得分:1)

这是一个实际可行的简单宏。我有一个数据透视表,其中包含各种成品的H列订单填充率%。订单填充率为98.5%或更低被认为是不好的。此宏将从第5行开始到列H,然后逐行向下检查填充率。它将隐藏好的行,使那些需要进一步分析或操作的行可见。它将一直这样做,直到它到达“最后一行”

Sub zSeries09_FilterPivotTable_ByFillRate98pt5() “ 'zSeries09_FilterPivotTable_ByFillRate98pt5宏 “

”     Application.Calculation = xlManual

Dim LR As String

Selection.SpecialCells(xlCellTypeLastCell).Select

LR = ActiveCell.Row

Application.Goto Reference:="R5C8"

例程:

 If ActiveCell.Row < LR Then GoTo TestError Else GoTo EndCom

性TestError:

 If IsError(ActiveCell) = True Then GoTo HideRow Else

TestBlank:

 If IsEmpty(ActiveCell) = True Then GoTo HideRow Else

TestFillRate:

 If ActiveCell.Value >= 0.985 Then GoTo HideRow Else

NoHide:

 Application.Goto Reference:="R[1]C"

 GoTo Routine

HideRow:

 Selection.EntireRow.Hidden = True
Application.Goto Reference:="R[1]C"

GoTo Routine

EndCom:

Application.Calculation = xlAutomatic

End Sub

答案 1 :(得分:0)

会这样:

Sub Quick()
Dim PTfield As PivotField

Set PTfield = ActiveSheet.PivotTables(1).PivotFields("Name")
With PTfield
    .ClearAllFilters
    .PivotFilters.Add xlCaptionEquals, , "AA5" 'for exact matching
End With

End Sub

AA5是过滤字段的一部分,而不是将参数更改为xlCaptionContains