vba驱动下创建合适的透视表
2024-12-03 16:05阅读:
'创建一个符合格式的透视表,
1.行字段是表格形式标签,重复标签,标签融合居中
2.列镶边风格
3.取消行总计
4.排序
Sub CreatePivotTable()
Dim PvtCache As PivotCache
Dim PvtTbl As PivotTable
Dim sht As Worksheet
Dim shtPivot As Worksheet
'设置数据源所在的工作表
Set sht = ThisWorkbook.Worksheets('站点汇总数据')
Set shtPivot =
ThisWorkbook.Worksheets('市区统计')
'创建数据透视表缓存
Set PvtCache =
ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:=sht.Cells(1).CurrentRegion)
'基于缓存创建数据透视表
Set PvtTbl =
PvtCache.CreatePivotTable(TableDestination:=shtPivot.Range('A1'),
TableName:='PivotTable1')
PvtTbl.MergeLabels = True
'标签融合居中,对于列标签比较有意义,防止列看错位
ActiveSheet.PivotTables('PivotTable1').RowGrand = False
'取消行总计
'以下是添加字段到
透视表各区域的示例,你根据实际数据和需求调整字段名称
PvtTbl.PivotFields('供服中心').Orientation = xlRowField
'将'字段1'添加到行区域
PvtTbl.PivotFields('抄表员').Orientation = xlRowField
'将'字段1'添加到行区域
PvtTbl.PivotFields('抄表方式').Orientation =
xlColumnField '将'字段2'添加到列区域
PvtTbl.AddDataField PvtTbl.PivotFields('电量合计'),
'电量合计', xlSum
'将'求和项:字段3'添加到数据区域,这里假设对字段3进行求和,若要其他计算类型可修改函数
PvtTbl.AddDataField PvtTbl.PivotFields('电量合计'),
'电量条数', xlCount
'将'求和项:字段3'添加到数据区域,这里假设对字段3进行求和,若要其他计算类型可修改函数
'
ActiveSheet.PivotTables('PivotTable1').AddDataField
ActiveSheet.PivotTables('PivotTable1').PivotFields('电量合计'),
'求和项:电量合计', xlSum
' With
ActiveSheet.PivotTables('PivotTable1').PivotFields('求和项:电量合计')
' .Caption = '计数项:电量合计'
' .Function = xlCount
' End With
PvtTbl.TableStyle2 = 'TableStyleMedium2'
'设置一个透视表风格,配色
End Sub
Sub 透视表美化()
Set PvtTbl = ActiveSheet.PivotTables(1)
For Each pp In PvtTbl.PivotFields
If pp.Orientation = xlRowField Then '如果字段方向是行字段,则设置字段布局为表格形式
pp.LayoutForm = xlTabular '表格形式而不是大纲
pp.RepeatLabels = True '重复标签
End If
Next
ActiveSheet.PivotTables('PivotTable1').ShowTableStyleColumnStripes
= True '镶边列
' PvtTbl.PivotFields('核算员').LayoutForm = xlTabular
'用表格形式,xlOutline是用大纲的形式
' PvtTbl.PivotFields('供服中心').LayoutForm = xlTabular
'用表格形式,xlOutline是用大纲的形式
'PvtTbl.PivotFields('核算员').Subtotals = Array(False, False, False,
False, False, False, False, False, False, False, False,
False)
End Sub