对于以下情况,我需要一个示例代码:
X1 Y1 X2 Y2 ...
2 100 2 101
3 110 3 108
4 115 5 114
5 116 6 117
6 120 7 121
来自当前工作表)。
我需要一个 VBA 代码,它通过给定的数据列标题查找所有数据列,并将所有这些数据列的图形绘制到一个散点图上,并用当前工作表名称命名绘制的线。
以下数据将创建一个散点图
X1 Y1
2 100
3 110
4 115
5 116
6 120
而这个会为同一个散点图创建另一个图表。
X2 Y2
2 101
3 108
5 114
6 117
7 121
所以所有的数据图也有单独的 x 轴值。
我的主要问题是由于某种原因我不知道如何制作散点图
使用 VBA。找到我可以开始工作的正确数据列。
答案是否会是某种子程序,将给定范围的新行添加到给定的散点图?
Sub createChart()
Dim headerToFind As String
headerToFind = "Y2"
Dim i As Integer
Dim j As Integer
Dim ws As Worksheet
i = 1
j = 1
' create and initialize scatterplot chart to given worksheet
For Each ws In Workbooks("data.xlsm").Worksheets
Do While IsEmpty(ws.Cells(1, i)) = False
If ws.Cells(1, i) = headerToFind Then
' get data from column i. x values can be found from column i-1
End If
i = i + 1
Loop
Next ws
结束子
最佳答案
您的问题非常广泛,但在您的评论中,您更具体地询问“如何创建一个散点图,我稍后可以通过它的名称来引用它。”
据我所知,在 Excel 中为图表命名的过程有点尴尬。我发现这样做的唯一方法是通过单击它来激活图表,然后进入 VBA 编辑器的即时窗口,然后键入:
ActiveChart.Parent.Name = "My scatter plot" ' or whatever name
然后,假设您没有删除图表,您可以在代码中引用它,如下所示:
Dim cho As chartObject
Dim cht As Chart
Set cho = Sheet1.ChartObjects("My scatter plot")
Set cht = cho.Chart
这是假设它在
Sheet1
.酌情调整。然后你可以像这样向它添加系列:Dim ser As Series
Set ser = cht.SeriesCollection.NewSeries
With ser
'example settings:
.ChartType = xlXYScatter
.XValues = Range("A2:A6")
.Values = Range("B2:B6")
.Name = Range("B1").Value
.MarkerStyle = xlMarkerStyleNone
'can also format the line style, color, weight, etc. etc.
End With
更多详情请访问
Chart
和 ChartObject
对象,看看this earlier answer .
关于excel - 遍历多个列并构建它们的图表的 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294816/