【问题标题】:Deselect all items in a pivot table using vba使用 vba 取消选择数据透视表中的所有项目
【发布时间】:2012-11-25 22:16:09
【问题描述】:

能否快速解释在新创建的数据透视表中取消选择所有项目的方法,以便我可以返回并仅选择一两个项目?我尝试了以下方法:

.PivotItems("(Select All)").Visible = False

谢谢。

【问题讨论】:

  • 您总是需要选择一个单元格,那么如果您只是选择一些随机单元格呢?
  • 我只想选择两个特定的单元格,所以我想取消选择所有单元格,然后只选择我想要的两个。
  • 好吧,没有必要先取消选择您当前的选择。您可以直接跳到选择这两个单元格吗?
  • 取消选择是什么意思,比如hide所有项目? :$
  • 当我创建数据透视表时,它从选择所有项目开始。我需要取消选择我没有开始的项目。我可以使用 .PivotItems("ItemWhatever").Visible = False 单独执行此操作,但我不确定如何一次取消选择所有项目。

标签: vba excel


【解决方案1】:

这可能是你能得到的最接近你想要的东西:

Dim i As Long
.PivotItems(1).Visible = True
For i = 2 To .PivotItems.Count
    .PivotItems(i).Visible = False
Next

这将使第一个选项成为唯一选择的选项(假设它在指向枢轴字段的 a 内)。如果您事先知道自己想要什么...进行相应的修改。

【讨论】:

  • 这就是我的选择。工作得很好。谢谢!用 ActiveSheet.PivotTables("PivotTable1").PivotFields("Business Area") 将 i 调暗为整数 .Orientation = xlRowField .Position = 1 For i = 2 To .PivotItems.Count .PivotItems(i).Visible = False .PivotItems( "Fire and EMS - Uniform").Visible = True .PivotItems("Police - Uniform").Visible = True .PivotItems(i - 1).Visible = False Next i End With
  • 或者更确切地说,使用 ActiveSheet.PivotTables("PivotTable1").PivotFields("Business Area") 将 i 调暗为整数 .Orientation = xlRowField .Position = 1 For i = 2 To .PivotItems.Count .PivotItems (i - 1).Visible = False .PivotItems("消防和 EMS - 制服").Visible = True .PivotItems("警察 - 制服").Visible = True .PivotItems("(空白)").Visible = False接下来我结束了
  • 我曾经使用过这种方法,但发现它仍然太慢,但是通过将手动更新设置为 true(即 PivotTable.ManualUpdate = True),它变得可以忍受了。这里描述:stackoverflow.com/questions/764504/…
【解决方案2】:

我发现循环遍历每个数据项需要很长时间,如果您想过滤数据透视表中的单个项而不遍历所有项,您可以使用以下代码:

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" 

这基本上是一个标签过滤器,但它对我有用。

【讨论】:

    【解决方案3】:

    检查以下内容。选择特定字段名称的数据。请注意,默认情况下您必须至少选择一项。并且不要忘记,如果您想隐藏项目,只能隐藏数据透视表字段中的连续项目。也许在页面加载、工作表打开或任何其他子触发器时,您可以选择基于特定字段选择的特定项目。然后让您的代码继续执行其他操作。

    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       
    

    【讨论】:

      【解决方案4】:

      这就是我为自定义过滤器选择所做的。由于双循环,可能会更慢。

      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
      

      【讨论】:

        【解决方案5】:

        嗯。

        因为你不知道如何隐藏所有,因为,你总是需要有 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
        

        【讨论】:

        • 在这个例子中,我想要描述 ARG BRL GCB MEX 的字段。所有其他人都将被隐藏。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-18
        • 2018-07-06
        • 1970-01-01
        相关资源
        最近更新 更多