2013-06-25 55 views
0

我需要以下情況下的例子的代碼:VBA代碼經過多列,並建立它們的圖表

  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 

末次

+0

我用我到目前爲止的代碼更新了我的帖子。我試圖使用宏記錄器來獲得一些代碼來處理,但這並不奏效。我似乎並不瞭解如何創建一個散點圖,我可以稍後通過它的名稱來引用它。 – Coltrane

回答

2

你的問題是相當廣泛的,但在你的評論,你問更具體的「如何創建散點圖,我可以參考以後通過它的名字。」

就我所知,在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。適當調整。在ChartChartObject對象

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 

更多細節,看看this earlier answer:然後你就可以添加系列像這樣。

+0

謝謝你的回答。我承認我的問題很廣泛。儘管如此,你的答案正是我所期待的。這真的拯救了我的一天。 :) – Coltrane

相關問題