我使用数据透视表进行了计算。
我想制作一个通用的数据透视表,该数据透视表将一直适用,我需要进行同样的计算。
我已经尝试过了,但是它不起作用,计算总是在数据透视表上阻塞。
Sheets.Add.Name = "tdc_flux"
Sheets("flux phf a+1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"flux phf a+1!R1C1:R1048576C16", Version:=6).CreatePivotTable _
TableDestination:="tdc_flux!R3C1", TableName:="Tableau croisé dynamique3", _
DefaultVersion:=6
Sheets("tdc_flux").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique3")
.ColumnGrand = True
.HasAutoFormat = True
.DisplayErrorString = False
.DisplayNullString = True
.EnableDrilldown = True
.ErrorString = ""
.MergeLabels = False
.NullString = ""
.PageFieldOrder = 2
.PageFieldWrapCount = 0
.PreserveFormatting = True
.RowGrand = True
.SaveData = True
.PrintTitles = False
.RepeatItemsOnEachPrintedPage = True
.TotalsAnnotation = False
.CompactRowIndent = 1
.InGridDropZones = False
.DisplayFieldCaptions = True
.DisplayMemberPropertyTooltips = False
.DisplayContextTooltips = True
.ShowDrillIndicators = True
.PrintDrillIndicators = False
.AllowMultipleFilters = False
.SortUsingCustomLists = True
.FieldListSortAscending = False
.ShowValuesRow = False
.CalculatedMembersInFilters = False
.RowAxisLayout xlCompactRow
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache
.RefreshOnFileOpen = False
.MissingItemsLimit = xlMissingItemsDefault
End With
ActiveSheet.PivotTables("Tableau croisé dynamique3").RepeatAllLabels _
xlRepeatLabels
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Concatner (ref +div)")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Type de flux")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique3").PivotFields(" En DICtrPr"), _
"Somme de En DICtrPr", xlSum
ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique3").PivotFields(" En DICtrPr"), _
"Somme de En DICtrPr", xlSum
这是它阻塞的部分。
“ Somme”是英语的总和,“ Tableaucroisédynamque”是数据透视表的名称。
答案 0 :(得分:0)
我强烈建议使用参考文献,例如G。数据透视表缓存为“ pc”,数据透视表为“ pt”。
在代码末尾,您必须先添加数据字段,例如rowfield和columnfield。
Private Sub GeneralPivot()
Dim pc As PivotCache
Dim pt As PivotTable
Sheets.Add.Name = "tdc_flux"
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"flux phf a+1!R1C1:R1048576C16", Version:=6)
With pc
.RefreshOnFileOpen = False
.MissingItemsLimit = xlMissingItemsDefault ' xlMissingItemsNone might be better!
End With
Set pt = pc.CreatePivotTable( _
TableDestination:="tdc_flux!R3C1", _
TableName:="Tableau croisé dynamique3", _
DefaultVersion:=6)
With pt
.ColumnGrand = True
.HasAutoFormat = True
.DisplayErrorString = False
.DisplayNullString = True
.EnableDrilldown = True
.ErrorString = ""
.MergeLabels = False
.NullString = ""
.PageFieldOrder = 2
.PageFieldWrapCount = 0
.PreserveFormatting = True
.RowGrand = True
.SaveData = True
.PrintTitles = False
.RepeatItemsOnEachPrintedPage = True
.TotalsAnnotation = False
.CompactRowIndent = 1
.InGridDropZones = False
.DisplayFieldCaptions = True
.DisplayMemberPropertyTooltips = False
.DisplayContextTooltips = True
.ShowDrillIndicators = True
.PrintDrillIndicators = False
.AllowMultipleFilters = False
.SortUsingCustomLists = True
.FieldListSortAscending = False
.ShowValuesRow = False
.CalculatedMembersInFilters = False
.RowAxisLayout xlCompactRow
.RepeatAllLabels xlRepeatLabels
End With
With pt.PivotFields("Concatner (ref +div)")
.Orientation = xlRowField
.Position = 1
End With
With pt.PivotFields("Type de flux")
.Orientation = xlColumnField
.Position = 1
End With
With pt.PivotFields(" En DICtrPr")
.Orientation = xlDataField
.Function = xlSum
.Name = "Somme de En DICtrPr"
End With
End Sub
为防止数据过时,设置MissingItemsLimit = xlMissingItemsNone
可能很有用。