Day33 - 报表自动化(2)

今日学习目标

  • 掌握数据透视表生成技术
  • 实现图表自动生成
  • 完成报表美化格式化

知识点

### 1. 数据透视表自动化
- PivotCache和PivotTable对象
- 设置行、列、数值字段
- 分组和筛选设置
### 2. 图表生成技术
- ChartObjects集合操作
- 图表类型选择
- 数据系列绑定
### 3. 报表美化
- 条件格式设置
- 样式模板应用
- 页眉页脚设置

今日代码

' 自动生成数据透视表
Sub CreatePivotTable()
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet
    Dim pc As PivotCache
    Dim pt As PivotTable

    Set wsSource = Worksheets("数据源")
    Set wsDest = Worksheets.Add

    ' 创建透视表缓存
    Set pc = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=wsSource.Range("A1").CurrentRegion)

    ' 创建透视表
    Set pt = pc.CreatePivotTable( _
        TableDestination:=wsDest.Range("A3"), _
        TableName:="销售报表")

    ' 设置透视表字段
    With pt
        .PivotFields("区域").Orientation = xlRowField
        .PivotFields("产品").Orientation = xlColumnField
        .PivotFields("销售额").Orientation = xlDataField
        .PivotFields("日期").Orientation = xlPageField
    End With

    ' 生成图表
    Call CreateChart(wsDest)
End Sub

' 自动生成图表
Sub CreateChart(ws As Worksheet)
    Dim chartObj As ChartObject

    Set chartObj = ws.ChartObjects.Add( _
        Left:=ws.Range("H2").Left, _
        Width:=400, _
        Top:=ws.Range("H2").Top, _
        Height:=300)

    With chartObj.Chart
        .SetSourceData Source:=ws.Range("A1").CurrentRegion
        .ChartType = xlColumnClustered
        .HasTitle = True
        .ChartTitle.Text = "销售数据透视图"
    End With
End Sub

练习题

  1. 创建按月份汇总的销售报表
  2. 生成柱状图和折线图组合
  3. 设置报表条件格式突出显示最大值