Day35 - 数据分析工具(2)

今日学习目标

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

知识点

### 1. 图表类型选择
- 柱状图:类别比较
- 折线图:趋势变化
- 饼图:占比分析
- 散点图:相关性分析
### 2. 数据对比技术
- 差异对比:Actual vs Budget
- 时间对比:YoY、MoM
- 多维度对比:分组柱状图
### 3. 趋势分析
- 移动平均计算
- 线性趋势线
- 预测函数Forecast

今日代码

' 创建组合图表
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. 添加数据标签和注释