加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

vba驱动下创建合适的透视表

(2024-12-03 16:05:44)
'创建一个符合格式的透视表,
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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有