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生成带平滑线的散点图,使数据可视化更加直观和美观。
热门推荐
肺结节早期有什么症状和危害
下一个NBA超级巨星?文班亚马——身高&技术与人格魅力的完美结合
卫生间装地漏最好遵循4个原则!
有时候太上进反而不是好事?不要让病态上进心毁了你的事业
中医按摩如何缓解偏头痛疼痛
甜瓜蒂催吐有副作用吗
五代十国傻傻分不清?共计54年的五代,为何后梁和后唐是关键?
对瑜伽新手友好9个简单坐姿体式,轻松入门不二选
中国“智慧减废城市”优秀案例
观赏鱼白点病怎么治疗(推荐这2种方法,见效快,不伤鱼)
圣杯?那是什么?能用的杯子?——《命运之夜》的背景故事
韩国再推“室温超导”新材料,国内团队:两个月前就知道PPT内容了
生地配熟地:补中有清 滋而不腻
一百年前,八座周天子墓被三个国家盗挖,如今宝物成外国镇馆之宝
量化交易中的KDJ指标优化策略研究
体育课的组织方法及其优化策略研究
设置电脑每天自动开关机,电脑定时开机的8个办法
装修法律规定是怎样的
双眼皮手术后多久可以热敷?这些护理要点请收好
大连金州旅游全攻略:金石滩、大黑山风景区美食住宿详析
配料表干净的酸奶推荐:十种配方健康的酸奶有哪些
大龄剩女越来越多,是什么让他们剩下了!
中国神仙体系中阴曹地府中的神仙等级与组织体系
猫毛过敏有哪些症状图片
夏天燥热上火喝什么?教你在家制作十三款美味凉茶
如何写公式源码:LaTeX、Markdown和HTML+MathJax的优劣分析
成都居住证办理指南
高铁最快29分钟直达!贵阳出发到这些城市好吃又好玩!
“红山文化与西辽河流域文明化进程综合研究”项目启动
牛肉切法大公開!如何切出嫩滑可口的牛肉?