问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Excel自动化神器,用VBA一键生成曲线图,数据可视化从此轻松搞定

创作时间:
作者:
@小白创作中心

Excel自动化神器,用VBA一键生成曲线图,数据可视化从此轻松搞定

引用
1
来源
1.
http://www.360doc.com/content/25/0201/16/441458_1145708934.shtml

在Excel中使用VBA自动生成复杂的曲线图可以帮助你自动化数据可视化的过程。本文详细介绍了如何使用VBA在Excel中自动生成曲线图,并通过实际数据案例展示了具体的实现步骤。

假设你有一个包含以下数据的Excel表格:

时间(秒)
温度(℃)
压力(kPa)
0
2
66
1
21
69
2
22
40
3
23
89
4
24
82
5
25
79
6
26
73
7
27
68
8
19
50
9
29
67
10
19
87
11
31
90

我们想要生成一个曲线图,显示温度和压力随时间的变化。

VBA代码示例

Sub CreateComplexChart()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim chart As Chart
    Dim lastRow As Long
    Dim xRange As Range
    Dim yRange1 As Range
    Dim yRange2 As Range
    
    ' 设置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 获取数据的最后一行
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' 定义X轴和Y轴的数据范围
    Set xRange = ws.Range("A2:A" & lastRow) ' 时间列
    Set yRange1 = ws.Range("B2:B" & lastRow) ' 温度列
    Set yRange2 = ws.Range("C2:C" & lastRow) ' 压力列
    
    ' 创建一个新的图表对象
    Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
    Set chart = chartObj.Chart
    
    ' 设置图表类型为折线图
    chart.ChartType = xlLine
    
    ' 添加第一个数据系列(温度)
    With chart.SeriesCollection.NewSeries
        .Name = "温度 (℃)"
        .XValues = xRange
        .Values = yRange1
    End With
    
    ' 添加第二个数据系列(压力)
    With chart.SeriesCollection.NewSeries
        .Name = "压力 (kPa)"
        .XValues = xRange
        .Values = yRange2
    End With
    
    ' 设置图表标题
    chart.HasTitle = True
    chart.ChartTitle.Text = "温度和压力随时间变化曲线图"
    
    ' 设置X轴和Y轴的标题
    chart.Axes(xlCategory, xlPrimary).HasTitle = True
    chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "时间 (秒)"
    chart.Axes(xlValue, xlPrimary).HasTitle = True
    chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "温度 (℃) / 压力 (kPa)"
    
    ' 设置图例位置
    chart.HasLegend = True
    chart.Legend.Position = xlLegendPositionBottom
    
    ' 设置网格线
    chart.Axes(xlCategory).HasMajorGridlines = True
    chart.Axes(xlValue).HasMajorGridlines = True
    
    ' 设置图表样式
    chart.ChartStyle = 201
    
    ' 自动调整图表大小
    chartObj.Chart.ChartArea.AutoScaleFont = True
End Sub

代码说明

  1. 数据范围定义:代码首先定义了X轴(时间)和Y轴(温度和压力)的数据范围。
  2. 创建图表对象:使用ChartObjects.Add方法在指定的位置创建一个新的图表对象。
  3. 设置图表类型:将图表类型设置为折线图(xlLine)。
  4. 添加数据系列:使用SeriesCollection.NewSeries方法添加两个数据系列,分别表示温度和压力。
  5. 设置图表标题和轴标题:为图表和X轴、Y轴设置标题。
  6. 设置图例和网格线:将图例放置在底部,并启用主要网格线。
  7. 设置图表样式:使用ChartStyle属性设置图表的样式。

运行代码

  1. 打开Excel工作簿,按下Alt + F11打开VBA编辑器。
  2. 在VBA编辑器中,插入一个新模块(Insert > Module)。
  3. 将上述代码粘贴到模块中。
  4. 关闭VBA编辑器,返回Excel。
  5. 按下Alt + F8,选择CreateComplexChart宏并运行。

运行代码后,Excel将在指定的工作表中生成一个复杂的曲线图,显示温度和压力随时间的变化。图表将包含标题、轴标题、图例和网格线,并且会自动调整大小以适应数据。

注意事项

  • 确保数据在工作表中的位置与代码中定义的范围一致。
  • 如果数据范围发生变化,需要相应地调整代码中的xRange、yRange1和yRange2的定义。
  • 你可以根据需要进一步自定义图表的样式和格式。

带平滑线的散点图

要将图表修改为带平滑线的散点图,只需对代码进行一些调整。具体来说,我们需要将图表类型更改为 xlXYScatterSmooth,并确保数据系列正确绑定到X轴和Y轴。

以下是修改后的VBA代码:

Sub CreateSmoothScatterChart()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim chart As Chart
    Dim lastRow As Long
    Dim xRange As Range
    Dim yRange1 As Range
    Dim yRange2 As Range
    
    ' 设置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 获取数据的最后一行
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' 定义X轴和Y轴的数据范围
    Set xRange = ws.Range("A2:A" & lastRow) ' 时间列
    Set yRange1 = ws.Range("B2:B" & lastRow) ' 温度列
    Set yRange2 = ws.Range("C2:C" & lastRow) ' 压力列
    
    ' 创建一个新的图表对象
    Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
    Set chart = chartObj.Chart
    
    ' 设置图表类型为带平滑线的散点图
    chart.ChartType = xlXYScatterSmooth
    
    ' 添加第一个数据系列(温度)
    With chart.SeriesCollection.NewSeries
        .Name = "温度 (℃)"
        .XValues = xRange
        .Values = yRange1
    End With
    
    ' 添加第二个数据系列(压力)
    With chart.SeriesCollection.NewSeries
        .Name = "压力 (kPa)"
        .XValues = xRange
        .Values = yRange2
    End With
    
    ' 设置图表标题
    chart.HasTitle = True
    chart.ChartTitle.Text = "温度和压力随时间变化曲线图(带平滑线)"
    
    ' 设置X轴和Y轴的标题
    chart.Axes(xlCategory, xlPrimary).HasTitle = True
    chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "时间 (秒)"
    chart.Axes(xlValue, xlPrimary).HasTitle = True
    chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "温度 (℃) / 压力 (kPa)"
    
    ' 设置图例位置
    chart.HasLegend = True
    chart.Legend.Position = xlLegendPositionBottom
    
    ' 设置网格线
    chart.Axes(xlCategory).HasMajorGridlines = True
    chart.Axes(xlValue).HasMajorGridlines = True
    
    ' 设置图表样式
    chart.ChartStyle = 201
    
    ' 自动调整图表大小
    chartObj.Chart.ChartArea.AutoScaleFont = True
End Sub

修改点说明

  1. 图表类型:将chart.ChartType = xlLine修改为chart.ChartType = xlXYScatterSmooth,以生成带平滑线的散点图。
  2. 数据系列绑定:散点图的X轴和Y轴需要分别绑定到数据范围。代码中已经正确绑定了xRange和yRange1、yRange2。
  3. 图表标题:修改了图表标题,以反映新的图表类型。

运行代码

  1. 打开Excel工作簿,按下Alt + F11打开VBA编辑器。
  2. 在VBA编辑器中,插入一个新模块(Insert > Module)。
  3. 将上述代码粘贴到模块中。
  4. 关闭VBA编辑器,返回Excel。
  5. 按下Alt + F8,选择CreateSmoothScatterChart宏并运行。

运行代码后,Excel将在指定的工作表中生成一个带平滑线的散点图,显示温度和压力随时间的变化。图表将包含标题、轴标题、图例和网格线,并且会自动调整大小以适应数据。

注意事项

  • 确保数据在工作表中的位置与代码中定义的范围一致。
  • 如果数据范围发生变化,需要相应地调整代码中的xRange、yRange1和yRange2的定义。
  • 你可以根据需要进一步自定义图表的样式和格式。

通过这种方式,你可以使用VBA生成带平滑线的散点图,使数据可视化更加直观和美观。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号