新浪博客

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

我的更多文章

下载客户端阅读体验更佳

APP专享