【问题标题】:VBA Pivot Table Collapse all fieldsVBA 数据透视表 折叠所有字段
【发布时间】:2016-11-09 19:50:12
【问题描述】:

我在 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

【问题讨论】:

  • 行字段的方向也应该有位置。前任。 ` 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"`你的表有没有look like

标签: vba excel pivot-table


【解决方案1】:

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

【讨论】:

  • 要清楚,你可以对列字段做同样的事情,只需将For Each pF In pT.RowFields更改为For Each pF In pT.ColumnFields
猜你喜欢
  • 2012-11-05
  • 1970-01-01
  • 2018-03-18
  • 2015-10-07
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
相关资源
最近更新 更多