基于与图表无关的单元格值的颜色图表线

时间:2015-04-08 14:13:45

标签: excel charts

我希望找到一种自动方式,根据与图表本身无关的单元格中的值和/或颜色,在Excel中对图表上的线条进行着色。基于价值的颜色是理想的解决方案。

以下链接中图表的数据位于单元格B2:F9中,我想要表示的颜色位于C1:F1行。基于此图像,我希望表示行C和E的图表线为绿色,表示D和F的图表线为红色。

enter image description here

为了给通过/失败部分着色我目前有条件格式设置,但我可以更改它以获得更有效的解决方案。这需要在大量报告中进行扩展,因此手动换色不是一种可行的选择。

非常感谢任何协助。

1 个答案:

答案 0 :(得分:1)

以下是一些示例代码,它们应该指向正确的方向。它会根据电子表格中其他位置的值更改系列的颜色。理想情况下,您可以根据自己的需要进行修改。我试图强调迭代系列并根据外部范围着色它们的关键步骤。关于选择图表和范围还有其他问题。

我正在使用“标题”单元格的值(通过/失败)来选择颜色。我认为通过条件格式化(IIRC?)格式化单元格的Interior颜色可能很困难。

Sub ColorChartBasedOnOtherCells()

    'set up a range of colors that "matches" the series
    Dim rng_colors As Range
    Set rng_colors = Range("C1:F1")

    'get a reference to the chart... assume it is selected for now
    Dim cht As Chart
    Set cht = ActiveChart

    Dim ser As Series
    Dim int_index As Integer

    'iterate through series in order... assume this matches the column order
    int_index = 1
    For Each ser In cht.SeriesCollection

        'check the value of the "reference-color" cell and set series color
        If rng_colors(int_index) = "pass" Then
            ser.Format.Line.ForeColor.RGB = RGB(255, 0, 0)
        Else
            ser.Format.Line.ForeColor.RGB = RGB(0, 255, 0)
        End If

        int_index = int_index + 1
    Next ser
End Sub

之前

before chart

之后

after with colors