首页officeexcel正文

excel录制宏疑难问题大全

强国说学习2022-06-30160大全疑难问题录制excel

一、问题背景:
Excel里已有6列数据
D列是时间,E列是对应到D列时间的数据,D列E列为一组等待制成XY散点图表(折线散点图)
F列是时间,G列是对应到F列时间的数据,F列G列为一组等待制成XY散点图表(折线散点图)
H列是时间,I列是对应到H列时间的数据,H列I列为一组等待制成XY散点图表(折线散点图)

二、问题目标:

文章内容由WPS之家(wps.qiangguoshuo.com)收集于网络,希望能为广大朋友提供帮助。

我的目的是录制一个宏,成功后只要运行宏即可将D列和E列、F列和G列、H列和I列组合自动制成三个XY散点图表(折线散点图),

三、问题困难:
1、我在录制宏时,选中D列和E列两列后,插入图表,选择XY散点图,确定,录制完后,我发现他是记录下了D列和E列的第一行和最后一行,比如说我录制宏时的D列和E列一共有20行,那么以后我在别的一个10行或者50行的数据下运行宏时,他仍然都是以20行作图表,因此这个录好的宏实际是无用的
2、我录好的宏在运行时只能作为新工作表插入Chart1,不能作为其中的对象插入Sheet1,否则就出现错误
3、三组数据我只能一个一个录制宏,录制三种,无法一个宏就制作三次图表,否则就出现错误

应对办法:

下面这个宏可以完成三个图表的制作,缺点是三个图表叠加在一起,需要手工拖到适当位置。
Sub Macro1()
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("D:E"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(2).Delete
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!C4"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!C5"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("F:G"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(2).Delete
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!C6"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!C7"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("H:I"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(2).Delete
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!C8"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!C9"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub

注:工作表名为“Sheet1”。

如想转载该文章请注明出处:强国说学习-qiangguoshuo.com
强国说学习

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

本文链接:https://www.qiangguoshuo.com/excel/16569.html