ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1211|回复: 1

[分享] 一键生成数据透视表并设置其格式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-5 11:30 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 创建数据透视表()
   Dim PT As PivotTable, PTCache As PivotCache
   Dim iR As Integer, iC As Integer, strSourceData As String
   Set wsh = Sheets("汇总表")

   iR = wsh.Cells(Rows.Count, 1).End(xlUp).Row - 1
   iC = wsh.Cells(1, Columns.Count).End(xlToLeft).Column - 1
   strSourceData = "汇总表!R1C1:R" & iR & "C" & iC

   Application.ScreenUpdating = False
   Application.DisplayAlerts = False
   On Error Resume Next

   Set PTCache = ActiveWorkbook.PivotCaches.Create( _
               SourceType:=xlDatabase, _
               SourceData:=strSourceData)
   Sheets("类别汇总").Delete
   Sheets.Add.Name = "类别汇总"
   ActiveWindow.DisplayGridlines = False

   Set PT = ActiveSheet.PivotTables.Add( _
          PivotCache:=PTCache, _
          tabledestination:=Range("a3"), _
          TableName:="类别透视")

   With PT
       .PivotFields("类别").Orientation = xlRowField
       .PivotFields("公司").Orientation = xlRowField
   End With

    With PT.PivotFields("总销量")
          .Orientation = xlDataField
          .Function = xlSum
   End With

    With PT.PivotFields("伟星总销量")
          .Orientation = xlDataField
          .Function = xlSum
   End With

    With PT.PivotFields("销量统计")
          .Orientation = xlDataField
          .Function = xlSum
   End With

   With PT.PivotFields("PPR")
          .Orientation = xlDataField
          .Function = xlSum
   End With

   With PT.PivotFields("PPR桔")
          .Orientation = xlDataField
          .Function = xlSum
   End With

'    With PT.PivotFields("PPR灰")
'          .Orientation = xlDataField
'          .Function = xlSum
'   End With
'
'    With PT.PivotFields("F-PPR")
'          .Orientation = xlDataField
'          .Function = xlSum
'   End With
'
'
'    With PT.PivotFields("SPM")
'          .Orientation = xlDataField
'          .Function = xlSum
'   End With
'
'    With PT.PivotFields("纳米")
'          .Orientation = xlDataField
'          .Function = xlSum
'   End With
'
'   With PT.PivotFields("PPR")
'          .Orientation = xlDataField
'          .Function = xlSum
'   End With
   ActiveSheet.PivotTables("类别透视").CompactLayoutRowHeader = "类别"
   With ActiveSheet.PivotTables("类别透视")
        With .PivotFields("类别")
             .LayoutForm = xlTabular
             .Subtotals = Array(False, False, False, False, False, False, _
                              False, False, False, False, False, False)
        End With
        With .PivotFields("公司")
             .LayoutForm = xlTabular
             .Subtotals = Array(False, False, False, False, False, False, _
                              False, False, False, False, False, False)
        End With
   End With
End Sub

Sub 汇总数据()
   With ActiveSheet.PivotTables("类别透视").PivotFields("类别")
       .PivotItems("包工包料").ShowDetail = False
       .PivotItems("零售").ShowDetail = False
       .PivotItems("其它").ShowDetail = False
       .PivotItems("私单").ShowDetail = False
       .PivotItems("装饰公司").ShowDetail = False
   End With
End Sub

Sub 明细数据()
   With ActiveSheet.PivotTables("类别透视").PivotFields("类别")
       .PivotItems("包工包料").ShowDetail = True
       .PivotItems("零售").ShowDetail = True
       .PivotItems("其它").ShowDetail = True
       .PivotItems("私单").ShowDetail = True
       .PivotItems("装饰公司").ShowDetail = True
   End With
End Sub

Sub 修改字段名()
   With ActiveSheet.PivotTables("类别透视")
      .PivotFields("求和项:伟星总销量").Caption = "伟星销量"
      .PivotFields("求和项:销量统计").Caption = "工资销量"
      .PivotFields("求和项:PPR").Caption = "PPR "
      .PivotFields("求和项:PPR桔") = "PPR桔 "
   End With
End Sub

Sub 设置数据透视表格式()
    Set wsh = Sheets("类别汇总")
    With ActiveSheet.PivotTables("类别透视")
        .TableStyle2 = "PivotStyleMedium14" '设置 设计显示数据透视表的格式,其中共有浅色、中等色、深色三大系列
        .MergeLabels = True '设置 合并且居中排列带标签的单元格
    End With

    Range("a4").CurrentRegion.Select
    With Selection.Font
       .Name = "宋体"
       .Size = 11
       .ThemeColor = xlThemeColorLight1
    End With

   With Selection
       .NumberFormatLocal = "_ * #,##0.00_ ;_ * -#,##0.00_ ;_ * ""-""??_ ;_ @_ "
       .Columns.EntireColumn.AutoFit
       With .Borders
            .LineStyle = xlContinuous
            .Weight = xlHairline
       End With
   End With
End Sub

Sub 设置标题()
   Dim iRow As Integer, iCol As Integer
   Set wsh = Sheets("类别汇总")
   iRow = wsh.Cells(Rows.Count, 1).End(xlUp).Row
   iCol = wsh.Cells(4, Columns.Count).End(xlToLeft).Column
   wsh.Range(wsh.Cells(1, 1), wsh.Cells(2, iCol)).Merge
   Set wks = Sheets("导出数据")
   wsh.Range("A1") = Month(wks.Range("b2").Value) & "月数据汇总"
   With wsh.Range("a1").Font
       .Name = "方正正大黑简体"
       .Size = 20
   End With
End Sub

TA的精华主题

TA的得分主题

发表于 2019-8-5 14:08 | 显示全部楼层
(非通用)代码离开了数据没有任何意义,录制宏的都比这有用
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 09:03 , Processed in 0.034462 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表