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练习题
- 创建按月份汇总的销售报表
- 生成柱状图和折线图组合
- 设置报表条件格式突出显示最大值