2012-02-03 83 views
1

在工作中,我製作了一個宏來格式化並繪製出測試我們所製作零件的數據。這些值必須在一定範圍內,所以我想在圖表中添加線條來表示容差限制的位置。使用宏在Excel圖表中創建水平線

例如,一個參數是某個信號的電壓值。它必須介於.271和.451之間以符合規格,所以我想在該圖表的這些值上添加直線。

其他圖表測量不同的東西,會有不同的值,但基本原理是相同的。

每個信號的數據點數量並不相同,但通常相當大,每個數據點有幾千個。

我發現了一些涉及繪圖工具或向圖表添加新數據系列的不同選項,但我不太熟悉excel宏的這些方面。事實上,我不認爲我能找到我第一次發現數據系列想法的頁面。

+0

我會用每行一個單獨的數據系列:你只需要兩個點來創建線。 – 2012-02-03 18:18:07

回答

1

每條線的新系列是最好的方法。

'add a line series with line but no markers 
    Sub AddLineSeries(cht As ChartObject, sName As String, xvals, _ 
         yvals, SeriesColor As Long) 
     Dim s As Series 
     Set s = cht.Chart.SeriesCollection.NewSeries 
     With s 
      .Name = sName 
      .Values = yvals 
      .XValues = xvals 
      .MarkerBackgroundColor = xlNone 
      .MarkerForegroundColor = SeriesColor 
      .MarkerStyle = xlMarkerStyleNone 
      With .Border 
       .Weight = xlThin 
       .Color = SeriesColor 
      End With 
     End With 
    End Sub 

用法(添加爲每個截止一行):

'cht is the chart object 
'minX/maxX are x-axis values you want to plot the line for 
'qcMin/Max are the y-axis values for your lower/upper cut-offs 
'Array() just creates an array of values to pass to the chart for plotting, since 
' we're not using values from a worksheet for this series 
AddLineSeries cht, "QC Min", Array(minX, maxX), Array(qcMin, qcMin), _ 
       RGB(255, 0, 0) 
AddLineSeries cht, "QC Max", Array(maxX, maxX), Array(qcMax, qcMax), _ 
       RGB(255, 0, 0) 
+0

cht是我正在修改以添加行的圖表 – Mark 2012-02-03 19:05:51

+0

Woops,張貼得太早,我會稍微做一點 – Mark 2012-02-03 19:06:15

+0

除了數組外,我獲得了大部分內容。它們代表X和Y值,但它們是否需要創建或者是否足夠?我假設maxIndex是我擁有的數據點的數量,但是什麼是qcMin和qcMax?我的上限和下限?你有關於Array()函數文檔的鏈接嗎? – Mark 2012-02-03 19:13:35

0

假設你使用的是XY散點圖,只是創建幾個數據點並將其添加爲一個新的系列。例如,輸入您的數據,如A1:B6所示,然後將整個範圍添加爲一系列。你會得到兩條線。顯然,X和Y值應該從您的原始數據中計算出來。

enter image description here

+0

這不只是一個圖表。我使用的數據集有36個由宏自動創建的圖表。此外,我希望運行此測試的其他人能夠使用它,而無需進行大量手動格式化。 – Mark 2012-02-04 15:18:15

+0

@Mark,你也可以在VBA中實現它,或者已經在你的工作簿中設置了它(也許在隱藏表格中進行計算)。我試圖做的一點是,你真的只需要一個系列的多行。這完全取決於你如何設置數據。 – 2012-02-04 23:05:56