VBA数据透视表:折叠所有字段

6

我在VBA中创建了一个充满字符串数据的数据透视表,但似乎无法折叠数据透视表中的所有字段,请问我该如何做?以下是我的源代码:

    SrcData = ActiveSheet.Name & "!" & Range(Cells(1, 1), Cells(46, 3)).Address(ReferenceStyle:=xlR1C1)
StartPvt = Sheets("Key Controls").Cells(2, 5).Address(ReferenceStyle:=xlR1C1)
Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=SrcData)
Set pvt = pvtCache.CreatePivotTable( _
    TableDestination:=StartPvt, _
    TableName:="PivotTable1")
pvt.PivotFields("SOP Reference").Orientation = xlRowField
pvt.PivotFields("Key Control ID").Orientation = xlRowField
pvt.PivotFields("Key Control Name").Orientation = xlRowField

1
行字段的方向也应该有位置。例如:With ActiveSheet.PivotTables("PivotTable3").PivotFields("Key Control ID") .Orientation = xlRowField .Position = 2 End With 假设您想要将整个字段折叠到“SOP Reference”,选择一个适当的单元格,比如 A15,代码将是 Range("A15").Select ActiveSheet.PivotTables("PivotTable3").PivotFields("Key Control Name"). _ PivotItems("electron").DrillTo "SOP Reference" 您的表格是否看起来像这样(https://www.dropbox.com/s/51znhaab1z0lnno/pivot_q070716.xlsm?dl=0)? - skkakkar
1个回答

9

不要使用 pf.ShowDetail = False

这会极大地影响效率,你可能会被卡住很长时间,并且可能会导致 Excel 崩溃!


正确的方法是使用 DrillTo

Public Sub PivotTable_Collapse()

    Dim pT As PivotTable
    Dim pF As PivotField

    Set pT = ActiveSheet.PivotTables(1)

    With pT
        For Each pF In pT.RowFields
            pF.DrillTo pF.Name
        Next pF
    End With

End Sub

1
要明确的是,您可以对列字段执行相同的操作,只需将 For Each pF In pT.RowFields 更改为 For Each pF In pT.ColumnFields - toucansame

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接