1

对于以下情况,我需要一个示例代码:

  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)。

我需要一个 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

结束子

4

1 回答 1

3

您的问题非常广泛,但在您的评论中,您更具体地询问“如何创建一个散点图,我稍后可以通过它的名称来引用它。”

据我所知,在 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请查看此较早的答案

于 2013-06-25T11:31:00.580 回答