本文详细介绍了 Excel Combo Chart(组合图表) 的概念及其应用场景,并通过一个实际 VBA 代码示例,展示了如何在 Excel 中创建组合图表。文章以一个包含销售额和利润率的销售数据表为例,逐步讲解了如何使用 VBA 代码将柱状图和折线图结合在一起,以同时展示不同类型的数据。代码部分涵盖了数据范围定义、图表创建、系列类型设置、坐标轴配置以及图例调整等关键步骤,帮助读者深入理解如何通过编程实现复杂的图表功能。无论是数据分析师还是 Excel 高级用户,本文都能为其提供实用的技术指导和灵感。
Excel (组合图表)是一种将两种或多种不同类型的图表组合在一起的图表类型。它允许你在同一个图表中显示不同的数据系列,并使用不同的图表类型(如柱状图、折线图、面积图等)来表示这些数据系列。这种图表类型通常用于比较不同类型的数据,或者在同一图表中展示多个维度的数据。
例如,你可以使用柱状图表示销售额,同时使用折线图表示利润率,这样可以在同一个图表中同时展示销售额和利润率的变化趋势。
VBA 实现 Excel 组合图表我们可以使用 VBA 在 Excel 中创建组合图表。以下是一个复杂的示例,展示如何创建一个包含柱状图和折线图的组合图表。
数据案例假设我们有一个销售数据表,包含以下列:
- 日期
- 销售额
- 利润率
日期 | 销售额 | 利润率 |
Jan | 10000 | 0.15 |
Feb | 12000 | 0.18 |
Mar | 13000 | 0.20 |
Apr | 14000 | 0.22 |
May | 15000 | 0.25 |
Jun | 16000 | 0.27 |
Jul | 17000 | 0.30 |
Aug | 18000 | 0.31 |
Sep | 19000 | 0.33 |
Oct | 20000 | 0.35 |
Nov | 21000 | 0.37 |
Dec | 22000 | 0.40 |
Sub CreateComboChart()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim lastRow As Long
Dim chartRange As Range
' 设置工作表
Set ws = ThisWorkbook.Sheets("Sheet1")
' 获取数据的最后一行
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 定义图表数据范围
Set chartRange = ws.Range("A1:C" & lastRow)
' 创建图表
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=600, Top:=50, Height:=400)
' 设置图表类型为组合图表
With chartObj.Chart
.SetSourceData Source:=chartRange
.ChartType = xlColumnClustered
' 添加第二个系列并设置为折线图
.SeriesCollection(2).ChartType = xlLine
' 启用次要坐标轴
.SeriesCollection(2).AxisGroup = xlSecondary
' 设置图表标题
.HasTitle = True
.ChartTitle.Text = "销售额和利润率组合图"
' 设置主要坐标轴标题
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Month"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Sales"
' 设置次要坐标轴标题
.HasAxis(xlValue, xlSecondary) = True ' 确保次要坐标轴存在
.Axes(xlValue, xlSecondary).HasTitle = True
.Axes(xlValue, xlSecondary).AxisTitle.Text = "Profit Margin"
' 设置图例位置
.HasLegend = True
.Legend.Position = xlLegendPositionBottom
End With
End Sub代码解释
- 工作表设置:代码首先获取了包含数据的工作表 Sheet1。
- 数据范围:通过 lastRow 获取数据的最后一行,并定义了图表的数据范围 chartRange。
- 创建图表:使用 ChartObjects.Add 方法在工作表中创建一个新的图表对象,并设置其位置和大小。
- 设置图表类型:将图表类型设置为 xlColumnClustered(柱状图)。
- 添加第二个系列:将第二个数据系列(利润率)的图表类型设置为 xlLine(折线图)。
- 图表标题和坐标轴标题:为图表添加标题,并为横轴和纵轴添加标题。
- 设置第二个数值轴:将第二个数据系列(利润率)关联到右侧的数值轴,并为其添加标题。
- 图例位置:将图例放置在图表底部。

运行上述 VBA 代码后,Excel 将生成一个组合图表,其中:
- 柱状图表示销售额。
- 折线图表示利润率。
- 横轴为月份,左侧纵轴为销售额,右侧纵轴为利润率。
