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
代码说明
- 数据范围定义:代码首先定义了X轴(时间)和Y轴(温度和压力)的数据范围。
- 创建图表对象:使用ChartObjects.Add方法在指定的位置创建一个新的图表对象。
- 设置图表类型:将图表类型设置为折线图(xlLine)。
- 添加数据系列:使用SeriesCollection.NewSeries方法添加两个数据系列,分别表示温度和压力。
- 设置图表标题和轴标题:为图表和X轴、Y轴设置标题。
- 设置图例和网格线:将图例放置在底部,并启用主要网格线。
- 设置图表样式:使用ChartStyle属性设置图表的样式。
运行代码
- 打开Excel工作簿,按下Alt + F11打开VBA编辑器。
- 在VBA编辑器中,插入一个新模块(Insert > Module)。
- 将上述代码粘贴到模块中。
- 关闭VBA编辑器,返回Excel。
- 按下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
修改点说明
- 图表类型:将chart.ChartType = xlLine修改为chart.ChartType = xlXYScatterSmooth,以生成带平滑线的散点图。
- 数据系列绑定:散点图的X轴和Y轴需要分别绑定到数据范围。代码中已经正确绑定了xRange和yRange1、yRange2。
- 图表标题:修改了图表标题,以反映新的图表类型。
运行代码
- 打开Excel工作簿,按下Alt + F11打开VBA编辑器。
- 在VBA编辑器中,插入一个新模块(Insert > Module)。
- 将上述代码粘贴到模块中。
- 关闭VBA编辑器,返回Excel。
- 按下Alt + F8,选择CreateSmoothScatterChart宏并运行。
运行代码后,Excel将在指定的工作表中生成一个带平滑线的散点图,显示温度和压力随时间的变化。图表将包含标题、轴标题、图例和网格线,并且会自动调整大小以适应数据。
注意事项
- 确保数据在工作表中的位置与代码中定义的范围一致。
- 如果数据范围发生变化,需要相应地调整代码中的xRange、yRange1和yRange2的定义。
- 你可以根据需要进一步自定义图表的样式和格式。
通过这种方式,你可以使用VBA生成带平滑线的散点图,使数据可视化更加直观和美观。
热门推荐
全球变暖加剧地震风险?最新研究揭示气候变化与地质灾害的关联
地壳板块碰撞:揭秘地震成因
汶川地震后生态修复新进展:植被恢复、地质灾害防治成效显著
汶川与唐山:两次大地震带来的启示
用幽默话术点亮你的职场人际关系
28句幽默风趣高情商俏皮话,秒变社交达人!
哈佛公开课揭秘:钱德勒的幽默心理学
黄西教你用英语搞笑,秒变社交达人!
门框尺寸测量及注意事项
唐山南湖生态城中央公园:从废墟到绿洲的生态奇迹
唐山大地震45周年:从亲历者角度看灾后救援
唐山:从地震废墟到现代化城市的重生之路
重磅!金华双龙景区晋级国家5A!附游玩全攻略!
健智体育杯期间,打卡防城港最美白浪滩
防城港三日游:打卡最美海滨胜地!
元旦打卡防城港:京族文化+白龙古炮台
秋冬防城港最美摄影点:白浪滩&东兴国门
中国裁判文书网:揭秘XX大案背后的检索秘籍
中国裁判文书网高效检索指南:从入门到精通
李讷:毛主席的小女儿,毕业于北大历史系,生活十分低调
周庄古镇:从“门票经济”到“产业经济”的转型之路
周庄古镇必打卡:沈厅、张厅、双桥
兰花控必看:超简单繁殖技巧大揭秘!
兰花高雅象征:古诗中的兰花意象解析
新手养兰必读:从环境到病害,全面掌握兰花养护要点
杜甫草堂兰花展:孔子眼中的君子之花
王羲之小楷VS牧心堂篆刻:《道德经》书法艺术的两种诠释
从《道德经》到现代管理:无为而治的智慧传承
《道德经》里的治国智慧:从古代帝王到现代企业管理
扬州早茶文化周:三家百年老店的美食传奇