今日学习目标

  • 掌握多类型图表创建
  • 实现数据对比分析
  • 完成趋势预测和可视化

知识点

1. 图表类型选择

  • 柱状图:类别比较
  • 折线图:趋势变化
  • 饼图:占比分析
  • 散点图:相关性分析

2. 数据对比技术

  • 差异对比:Actual vs Budget
  • 时间对比:YoY、MoM
  • 多维度对比:分组柱状图

3. 趋势分析

  • 移动平均计算
  • 线性趋势线
  • 预测函数Forecast

今日代码

vba
' 创建组合图表 Sub CreateComboChart() Dim chartObj As ChartObject Dim ws As Worksheet Set ws = Worksheets("分析数据") ' 创建图表 Set chartObj = ws.ChartObjects.Add( _ Left:=100, Width:=500, Top:=50, Height:=350) With chartObj.Chart .SetSourceData Source:=ws.Range("A1:C10") .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = "销售趋势分析" ' 添加趋势线 .SeriesCollection(1).Trendlines.Add(Type:=xlLinear) End With ' 创建第二个图表 - 折线图 Set chartObj = ws.ChartObjects.Add( _ Left:=100, Width:=500, Top:=420, Height:=300) With chartObj.Chart .SetSourceData Source:=ws.Range("A1:A10,B1:B10") .ChartType = xlLineMarkers .HasTitle = True .ChartTitle.Text = "增长率趋势" End With End Sub ' 移动平均计算 Sub CalculateMovingAverage() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim ma As Double Set ws = Worksheets("销售数据") lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' 计算3个月移动平均 For i = 4 To lastRow ma = Application.WorksheetFunction.Average( _ ws.Cells(i - 1, 2), ws.Cells(i - 2, 2), ws.Cells(i - 3, 2)) ws.Cells(i, 3).Value = ma Next i ws.Range("C1").Value = "移动平均" End Sub

练习题

  1. 创建双轴图表显示销售额和利润率
  2. 实现同比环比自动计算
  3. 添加数据标签和注释

参考解答

1. 使用xlColumnClustered和xlLine组合,设置SecondaryAxis。 2. 用Lag函数获取去年同期值,计算(本期-同期)/同期*100%。 3. 使用DataLabels.Add添加标签,添加TextFrame用于注释说明。


由在线工具箱(www.vba.net)整理制作