目录
需求
表格内某两列的数据分别作为X轴和Y轴,创建带直线与数据标记的散点图
版本一
Sub 散点图()
For i = 2 To Worksheets.Count '遍历需要创建散点图的Sheet
Sheets(i).Select
lastrow = ActiveSheet.UsedRange.Rows.Count
For j = 6 To 7 '把第六、第七列的数据作为Y轴
If Cells(1, j).Value <> -99 Then
Sheets(i).Shapes.AddChart2.Select '创建图表,并Select
For k = ActiveChart.FullSeriesCollection.Count To 1 Step -1 '删除默认的系列,Office2016有五个默认的系列且全部显示
ActiveChart.FullSeriesCollection(k).Delete
Next k
ActiveChart.ChartType = xlXYScatterLines '设置图标属性为带直线与数据标记的散点图
ActiveChart.SeriesCollection.NewSeries '新建系列,一条折线表示一个系列
ActiveChart.SeriesCollection(1).XValues = "='" & ActiveSheet.Name & "'!" & "$E$1:$E$" & lastrow 'E列数据作为X轴数据
ActiveChart.Axes(xlCategory, xlPrimary).MinimumScale = Application.WorksheetFunction.Min(Range("E1:E" & lastrow)) '设置横坐标的最小值为E列的最小值,设置X轴数据后才能设置最小值
If j = 6 Then
ActiveChart.SeriesCollection(1).Name = "depth" '新插入的数据系列名称,用于图例显示
ActiveChart.SeriesCollection(1).Values = "='" & ActiveSheet.Name & "'!" & "$F$1:$F$" & lastrow '一列数据作为Y轴数据
sensortype = "depth"
Else
ActiveChart.SeriesCollection(1).Name = "pressure" '新插入的数据系列名称,用于图例显示
ActiveChart.SeriesCollection(1).Values = "='" & ActiveSheet.Name & "'!" & "$G$1:$G$" & lastrow '一列数据作为Y轴数据
sensortype = "pressure"
End If
ActiveChart.ChartTitle.Text = ActiveSheet.Name & " " & sensortype '设置图标名称
End If
Next j
ActiveSheet.ChartObjects.Top = 300 '设置图表位置,距编辑区域顶部
ActiveSheet.ChartObjects(1).Left = 300 '设置图表位置,距编辑区域左侧
If ActiveSheet.ChartObjects.Count > 1 Then '多个图表排列
ActiveSheet.ChartObjects(2).Left = 900 + ActiveSheet.ChartObjects(1).Width + 100
End If
Next i
End Sub
参考
1.设置坐标轴:http://www.exceloffice.net/archives/644
2.生成散点图:http://blog.sina.com.cn/s/blog_8748bb0001012usj.html
3.图表类型:https://blog.csdn.net/tulasgao/article/details/13018935