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生成带平滑线的散点图,使数据可视化更加直观和美观。
热门推荐
嫦娥六号着陆月球背面:揭秘月球南极的极端温度与科研站选址
嫦娥六号成功带回月背样本 揭秘极端恶劣温度环境
政府补贴叠加商家优惠,泸州家电以旧换新带动消费近4亿
祖母绿原石项链鉴别秘籍,让你不再受骗!
梵克雅宝展出克利奥帕特拉祖母绿项链:一段跨越千年的绿色传奇
跨性别健康指南:多元性别选择的心理影响
跨性别者权益改善,社会结构迎来变革
可乐鸡翅新宠:翅根还是翅中?
年产破千万辆!中国新能源汽车迈入新阶段,河南增速领跑全国
改良版可乐鸡翅:低糖健康也能美味
青海高原自驾游:老司机总结的安全避坑手册
谢咏教你从古诗词中为女儿取名
三亚租金普降:保租房入市叠加旅游低迷,区域分化加剧
一文读懂投资理财:基础产品选择与资产配置策略
古诗词女孩名字VS热播剧女主角,谁更仙?
理财入门:构建被动收入的六大实用策略
四川为什么是“南方冰雪游首选地”
中医教你告别情绪小怪兽
掘进突破1000米!西渝高铁华蓥山隧道建设取得重大进展
冬日华蓥:雪中漫步,寻找冬日的诗意
5种富贵花,添福添贵添好运,花开就爆盆,漂亮又好养!
双减之下,古诗词助力孩子语言教育
谢咏老师教你古诗词取名:让诗意与五行完美结合
张桃芳:从“三个大烧饼”到抗美援朝“狙神”
张桃芳:从“笨兵”到“狙神”的传奇人生
“真人假章”背后的合同陷阱揭秘
职场合同签订,这些坑千万别踩!
葛湛儒律师教你规避合同陷阱
罕见Leriche综合征患者在聊城获救,微创手术成治疗新选择
全球视野下的中国劳务派遣:从兴起走向规范