基于单元格值更改饼图上颜色的颜色

时间:2017-03-29 15:32:35

标签: excel vba excel-vba

您刚刚开始使用VBA excel - 有没有办法根据不直接输入饼图的值为饼图分段? 我的示例数据如下所示:

        Steps   % Complete    Status
        Step1         100%          B  (Blue)
        Step2         50%           R  (Red)
        Step3         30%           G  (Green)
        Step4         15%           A  (Yellow)

仅使用前两列(步骤和完成百分比)生成饼图。但我希望饼图的每个段都根据状态列进行着色。

1 个答案:

答案 0 :(得分:1)

首先使用vba设置条件格式,根据状态列所代表的颜色为每个图表输入单元格(%完整列)着色(如果状态" R"然后%完成颜色为红色) - 以下样本
**注意 - 常规条件格式不起作用

Dim status_value As Range
Set status_value = Sheets("Sheet 1").Cells(20, 3) - 
    If mycell.Value = "B" Then
        mycell2.Interior.color = RGB(0, 112, 192) 'Blue
    ElseIf mycell.Value = "R" Then
        mycell2.Interior.color = RGB(255, 0, 0) ' Red
    ElseIf mycell.Value = "A" Then
        mycell2.Interior.color = RGB(255, 192, 0) 'Amber
    ElseIf mycell.Value = "G" Then
        mycell2.Interior.color = RGB(0, 176, 80) ' Green
    ElseIf mycell.Value = "NA" Then
        mycell2.Interior.color = RGB(166, 166, 166) 'Grey
    End If

以下代码将根据提供图表值

的单元格的内部颜色为图表着色
Sub ColorCharts()
        For Each ch In ActiveSheet.ChartObjects
            For Each ser In ch.Chart.SeriesCollection
            s = Split(ser.Formula, ",")
                For i = 1 To UBound(ser.Values)
                    ser.Points(i).Interior.color = Range(s(2)).Cells(i).Interior.color
                Next i
            Next ser
        Next ch
        End Sub