如何以编程方式更改Excel 2007中图表中一系列的线条颜色

我有一个图表,其中有一系列表示离散测量的大集合(1000)。 其中一些是不好的测量,我想根据另一组数据描述系列的颜色,这些数据描述了测量的准确度。 不好的测量结果应该是红色的,好的测量结果是绿色的,中间是从红色到黄色到绿色的某种梯度。

这应该能够用VBA进行编程,但是我不知道该怎么做。 任何人都可以给我一些提示?

在VBA中为图表着色很容易。 这里有一些笔记。

Dim cht As Chart Dim sc As Series Dim blnBad As Boolean Dim j j = 85 'RGB orange ' blnBad = False 'This is a chart called Chart 1, it would be possible ' 'to use the charts collection ' Set cht = ActiveSheet.ChartObjects("Chart 1").Chart 'A chart is composed of series of data ... ' For Each sc In cht.SeriesCollection ' ... that you can iterate through to pick up ' ' the individual data values, or a data range. ' ' Values in this case. ' For i = LBound(sc.Values) To UBound(sc.Values) ' That can be checked against another set of ' ' values in the range Bad. ' With ActiveSheet.Range("Bad") ' So, look for the value ... ' Set c = .Find(sc.Values(i), lookat:=xlWhole, LookIn:=xlValues) ' and if it is found ... ' If Not c Is Nothing Then ' ... then set the Bad flag ' blnBad = True End If End With Next ' So, this range contains a Bad value ' ' and we will colour it red ... ' If blnBad Then sc.Border.Color = RGB(255, 0, 0) ' ... not forgetting the markers ' sc.MarkerForegroundColor = RGB(255, 0, 0) Else ' Otherwise, use an increasingly yellow colour ' sc.Border.Color = RGB(255, j, 0) sc.MarkerForegroundColor = RGB(255, j, 0) j = j + 30 ' getting more yellow ' Debug.Print j ' uncomment to see j in the immediate window ' End If blnBad = False Next End Sub 

你是否locking在VBA中? 一种可以实现的方法是打开你的OOXML .xlsx文档档案(它实际上是一个Zip档案)。 然后,您可以自由访问组成文档本身的XML数据。 这可以通过XSL样式表或您select的任何其他脚本来运行,然后重新编译。