使用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