我正在尝试过滤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
答案 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