有人可以快速解释在新创建的数据透视表中取消选择所有项目的方法,以便我可以返回并只选择一两个项目吗?我尝试了以下方法:
.PivotItems("(Select All)").Visible = False
谢谢。
这可能是您可以获得的最接近您想要的东西:
Dim i As Long
.PivotItems(1).Visible = True
For i = 2 To .PivotItems.Count
.PivotItems(i).Visible = False
Next
这将使第一个选项成为唯一选择的选项(假设它在指向枢轴字段的 a 内)。如果您事先知道自己想要什么...进行相应的修改。
我发现遍历每个数据项需要花费大量时间,如果您想过滤数据透视表中的单个项目而不遍历所有项目,您可以使用以下代码:
ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").ClearAllFilters
ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").PivotFilters.Add _
Type:=xlCaptionEquals, Value1:="Your string here"
这基本上是一个标签过滤器,但它对我有用。
检查以下内容。选择特定字段名称的数据。请注意,默认情况下您必须至少选择一项。并且不要忘记,如果要隐藏项目,只能隐藏数据透视表字段中的连续项目。也许在页面加载、工作表打开或任何其他子触发器时,您可以根据特定字段选择要选择的特定项目。然后让您的代码继续执行其他任何操作。
Sub specificItemsField()
Dim pf As PivotField
Dim pi As PivotItem
Dim strPVField As String
strPVField = "Field Name"
Set pt = ActiveSheet.PivotTables(1)
Set pf = pt.PivotFields(strPVField)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
pf.AutoSort xlManual, pf.SourceName
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
pf.AutoSort xlAscending, pf.SourceName
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
这就是我为自定义过滤器选择所做的事情。由于双循环,可能会更慢。
Dim toSelect(1 To 3) As String
toSelect(1) = "item1"
toSelect(2) = "item2"
toSelect(3) = "item3"
For Each pvItem In objField.PivotItems
For Each st In toSelect
If pvItem.Value = st Then
pvItem.Visible = True
Exit For
Else
pvItem.Visible = False
End If
Next
Next
好。
因为你没有如何隐藏所有,因为,总是你需要有 1 个项目可见
我这样做:
我开始隐藏第一个字段,在转到下一个字段之前,我显示我需要可见的所有字段,然后,我转到第二个项目,隐藏,然后再次显示我想要的所有项目,依此类推。然后,任何字段都将始终可见,并且不会有错误。
循环之后,我再次尝试显示我想要的所有字段。
使用 ActiveSheet.PivotTables("TablaD2").PivotFields("Entity")
Dim i As Long
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = False
.PivotItems("ARG").Visible = True
.PivotItems("BRL").Visible = True
.PivotItems("GCB").Visible = True
.PivotItems("MEX").Visible = True
Next
.PivotItems("ARG").Visible = True
.PivotItems("BRL").Visible = True
.PivotItems("GCB").Visible = True
.PivotItems("MEX").Visible = True
End With