VBA代码通过多列,并build立他们的图表

我将需要一个示例代码为以下情况:

  1. 我在包含数据列的工作簿中有多个工作表
  2. 工作表如下所示:

    X1 Y1 X2 Y2 ... 2 100 2 101 3 110 3 108 4 115 5 114 5 116 6 117 6 120 7 121 
  3. 每张纸都有相同的数据标题(在这种情况下,X1和Y1等)。

  4. 每张工作表只包含每个数据列标题中的一个(Y2不能从当前工作表中find两次)。

我需要一个VBA代码,通过给定的数据列标题查找所有数据列,并将所有这些数据列的graphics绘制到一个散点图图表中,并用当前表格名称命名绘制的行。

以下数据将创build一个graphics来散点图图表

  X1 Y1 2 100 3 110 4 115 5 116 6 120 

这一个会创build另一个图表到相同的散点图图表。

  X2 Y2 2 101 3 108 5 114 6 117 7 121 

所以所有的数据图都有单独的x轴值。

我的主要问题是,我由于某种原因无法find如何使散点图工作与VBA。 find我可以工作的正确的数据列。

答案是否是例如某种子程序,将给定范围的新行添加到给定的散点图图表中?


 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 

结束小组

你的问题是相当广泛的,但是在你的评论中,你更具体地询问“如何创build一个散点图,以后可以用它的名字来引用”。

据我所知,在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 

有关ChartChartObject对象的更多详细信息,请查看此前的答案 。