使用vba取消选择透视表中的所有项目
能否简单地解释一下如何取消选择新创建的透视表中的所有项目,以便我可以返回并仅选择一个或两个项目?我尝试了以下方法:使用vba取消选择透视表中的所有项目,vba,excel,Vba,Excel,能否简单地解释一下如何取消选择新创建的透视表中的所有项目,以便我可以返回并仅选择一个或两个项目?我尝试了以下方法: .PivotItems("(Select All)").Visible = False 谢谢。这可能是最接近您想要的: Dim i As Long .PivotItems(1).Visible = True For i = 2 To .PivotItems.Count .PivotItems(i).Visible = False Next 这将使第一个选项成为唯一选定的
.PivotItems("(Select All)").Visible = False
谢谢。这可能是最接近您想要的:
Dim i As Long
.PivotItems(1).Visible = True
For i = 2 To .PivotItems.Count
.PivotItems(i).Visible = False
Next
这将使第一个选项成为唯一选定的选项(假设该选项位于指向数据透视字段的范围内)。如果你事先知道你想要什么。。。相应地修改。检查以下内容。为特定字段名选择数据。请注意,默认情况下,您必须至少选择一项。另外,不要忘记,如果要隐藏项,则只能隐藏数据透视表字段中的连续项。可能在页面加载、工作表打开或任何其他子触发器时,您可以根据特定字段选择要选择的特定项。然后允许您的代码继续执行其他任何操作
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
我发现循环遍历每个数据项需要很多时间,如果您想在一个透视中筛选单个项而不循环遍历所有项,可以使用以下代码:
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"
这基本上是一个标签过滤器,但它对我有效。很好
因为您不知道如何隐藏所有项,因为,您始终需要有1项可见
我这样做:
我开始隐藏第一个字段,在转到下一个字段之前,我显示所有需要显示的字段,然后转到第二个项,然后隐藏,然后再次显示所有需要的项,依此类推。然后,任何字段都将始终可见,并且不会有错误
在循环之后,我再次尝试显示我想要的所有字段
使用ActiveSheet.PivotTables(“TablaD2”).PivotFields(“实体”)
你总是需要选择一个单元格,那么如果你只是选择一些随机单元格呢?我只想选择两个特定的单元格,所以我想取消选择所有单元格,然后只选择我想要的两个。好吧,没有必要先取消选择你当前选择的单元格。你能直接跳到选择这两个单元格吗?取消选择是什么意思,比如
hide
all items$创建透视表时,首先选择所有项目。我需要取消选择我不知道从何开始的项目。我可以单独使用.PivotItems(“itemWhatch”).Visible=False来执行此操作,但我不确定如何一次取消选择所有项。下面是我使用的方法。工作得很好。谢谢使用ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“业务区域”).Orientation=xlRowField.Position=1表示i=2到.PivotItems.Count.PivotItems(i).Visible=False.PivotItems(“Fire and EMS-Uniform”).Visible=True.PivotItems(“Police-Uniform”).Visible=True.PivotItems(i-1).Visible=False下一个i以或更确切地说Dim i作为ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“业务区域”).Orientation=xlRowField.Position=1表示i=2到.PivotItems.Count.PivotItems(i-1)。Visible=False.PivotItems(“Fire and EMS-Uniform”).Visible=True.PivotItems(“Police-Uniform”).Visible=True.PivotItems(“(空白)”).Visible=False下一步我以结束我使用了这种方法,发现它仍然太慢,但通过将手动更新改为True(即PivotTable.ManualUpdate=True)它使它变得可以忍受。这里描述:在这个例子中,我想要描述为ARG BRL GCB MEX的字段。所有其他字段都将被隐藏。
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