2012-02-03 75 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