2

我有一个图表,其中包含一系列表示大量(1000 个)离散测量的图表。其中一些是错误的测量值,我想根据另一组描述测量结果准确度的数据为该系列的线条着色。不好的测量值应该是红色的,好的测量值应该是绿色的,并且介于从红色到黄色到绿色的某种渐变之间。

这应该可以用 VBA 编程,但是我不知道该怎么做。谁能给我一些提示?

4

2 回答 2

4

在 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
于 2008-11-14T12:54:16.483 回答
1

您是否被锁定在 VBA 中?实现此目的的一种方法是打开您的 OOXML .xlsx 文档存档(它实际上是一个 Zip 存档)。然后,您可以自由访问构成文档本身的 XML 数据。这可以通过 XSL 样式表或您选择的任何其他脚本运行,然后重新压缩。

于 2008-11-14T03:55:27.120 回答