7

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

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

谢谢。

4

5 回答 5

10

这可能是您可以获得的最接近您想要的东西:

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

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

于 2012-12-07T17:53:22.320 回答
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" 

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

于 2015-01-26T14:27:17.110 回答
1

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

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       
于 2012-12-07T17:55:56.487 回答
0

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

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
于 2014-03-27T09:42:49.930 回答
0

好。

因为你没有如何隐藏所有,因为,总是你需要有 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
于 2019-09-03T17:49:13.390 回答