2016-07-07 3 views
1

Я создал сводную таблицу в VBA, полную строковых данных, но, похоже, не может свернуть все поля в сводной таблице, как бы я это сделал? Вот мой исходный кодVBA Pivot Table Свернуть все поля

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

Ориентация полей строки должны иметь позиции также. Ex. 'With ActiveSheet.PivotTables (« PivotTable3 »). PivotFields (« Key Control ID ») .Orientation = xlRowField .Position = 2 End With' Предположим, вы хотите свернуть все поле в« SOP Reference ». Выбор правильной ячейки 'A15'code будет' Range («A15»). Выберите ActiveSheet.PivotTables («PivotTable3»). PivotFields («Key Control Name»). _ PivotItems («электрон»). DrillTo «Ссылка SOP» 'Создает ли ваша таблица [https://www.dropbox.com/s/51znhaab1z0lnno/pivot_q070716.xlsm?dl=0) – skkakkar

ответ

0

ли НЕ использование 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