更改图表 Excel VBA 中的点颜色

更改图表 Excel VBA 中的点颜色

我正在尝试从 excel vba 中的图表中获取点数?

我在 excel 中制作了一个学生成绩图表,我想设置一个条件,即如果图表上的分数大于 90,则点的颜色变为红色,如果小于 90,则颜色为绿色。如何使用 VBA 做到这一点?

答案1

这是一个简单的例子,它可以提供您所需要的一切:

Sub Macro1()
    Dim crt As Chart
    Dim ser As Series
    Dim val As Long
    Dim pnt As Point

    Set crt = ActiveChart

    Debug.Print "Number of Series: ", crt.SeriesCollection.Count

    Set ser = crt.SeriesCollection(2)

    Debug.Print "# Points in Series 2: ", ser.Points.Count
    NumPoints = ser.Points.Count

    Debug.Print "Values for Series 2:"
    For i = 1 To NumPoints
        val = ser.Values(i)
        Debug.Print " ", i, val,

        Set pnt = ser.Points(i)

        If val > 6 Then
            pnt.MarkerForegroundColorIndex = 4
            pnt.MarkerBackgroundColorIndex = 4
            Debug.Print pnt.MarkerForegroundColor, pnt.MarkerForegroundColorIndex
        Else
            Debug.Print
        End If
    Next i

End Sub

如果可以,您应该使用索引值设置颜色,因为这样可以保持一致的颜色。另请注意,非索引颜色编号从 -1 开始,因此您不能使用它来检查实际颜色值。它但是,一旦您更改颜色,就会设置。如果您希望填充与边缘相同,您还需要更改背景颜色以及前景。

答案2

不要使用宏,而是创建两个系列。假设成绩在 B2:B10。选择 C2:C10,其中 C2 为活动单元格。输入:

=IF(B2>=90,B2,NA())

然后按住 Ctrl 并按 Enter,将公式输入到选定范围的所有单元格中。

选择 D2:D10,其中 D2 为活动单元格。输入

=IF(B2<90,B2,NA())

然后按住 Ctrl 并按 Enter。

B 列的值将仅显示一次,根据其值显示在 C 列或 D 列中,而另一列将包含#N/A未用标记绘制的错误。

使用 C 列和 D 列制作图表,使用好颜色格式化 C 列,使用坏颜色格式化 D 列。由于红绿色盲占主导地位,因此红色和绿色不是好的选择。尝试使用蓝色表示好,橙色表示坏。

相关内容