使用VBA更改Excel图表上各个点的颜色

时间:2014-03-08 11:13:50

标签: excel vba charts pattern-matching

我有一张测量过程的图表。并基于某些标准:

标准1:比平均值低8个点(只需要始终低于平均值,可以上升或下降。

标准2:尝试识别循环数据,因此我想检测何时在三个数据点(8,10,7)的流中最高数字(两边都有两个较低的数字),反之亦然。

然后,如果在数据中检测到这些模式,我想使用VBA来更改符合条件的这些特定数据点的颜色。

这可能吗?不确定如何实现它?基本上我会将函数传递给一系列数据,列A将具有日期,列B的值将介于1-10之间。

1 个答案:

答案 0 :(得分:0)

以下子更改了值大于50的各个点的颜色。您可以修改此代码,其中If vals(x) > 50 Then具有将执行模式匹配的if语句

编辑我已对其进行了修改,以便仅对这些值进行着色> 50其中先前的值也在> 50

Sub ColourOver50()

     Set cht = ActiveSheet.ChartObjects(1).Chart
     Set s = cht.SeriesCollection(1)

     vals = s.Values

     For x = WorksheetFunction.Max(LBound(vals), 8) To UBound(vals)
     Dim flag As Boolean
     flag = True
     For i = 0 To 7
          If vals(x - i) > 50 Then
               'do nothing
          Else
               flag = False
          End If
     Next

     If flag = True Then
        With s.Points(x)
            .Format.Line.ForeColor.RGB = RGB(255, 0, 0)
        End With
     End If

     Next x

 End Sub

enter image description here