Excel 2007根据另一个字段更改单个系列中的条形颜色

时间:2013-04-15 11:45:38

标签: excel colors bar-chart series

我有一个包含这样数据的数据透视表:

Chain     Store               Units
Bob's     BB Los Angeles        10
Bob's     BB San Diego          12
Tom's     TM Los Angeles        12
Tom's     TM San Francisco      18
Kate's    K Monterey            11

目前我的条形图只是按降序显示所有商店和单位,因此TM San Francisco是第一个,然后是TM洛杉矶和BB圣地亚哥,然后是K Monterey等。这就是我想要查看数据的方式。

但我也希望对链条进行颜色编码,因此Bob的商店有一个红色条,Tom有蓝色,而Kate是绿色。

有可能这样做吗?我已经尝试了各种方法来设置数据透视表,但最终看起来一团糟,我无法找到一种方法将每个条形图的颜色基于“链”字段。

=

我正在测试宏解决方案,但如果有人有非宏解决方案,请继续回答。 :)

1 个答案:

答案 0 :(得分:1)

如果您正在寻找基于宏/ VBA的解决方案,那么操作图表的数据点格式非常容易。假设系列XValues = Chain,你可以这样做:

Sub SetColors()
Dim cht As Chart
Dim srs As Series
Dim xVals As Variant
Dim p As Long

Set cht = ActiveSheet.ChartObjects(1).Chart '<-- Modify as needed'
Set srs = cht.SeriesCollection(1) '<-- Modify as needed'

xVals = srs.XValues  '<-- modify as needed, if your Chain is not part of series data you will need to build this array another way'

For p = 1 To UBound(xVals)
    Select Case xVals(p)
        Case "Bob's"
            srs.Points(p).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
        Case "Tom's"
            srs.Points(p).Format.Fill.ForeColor.RGB = RGB(0, 255, 0)
        Case "Kate's"
            srs.Points(p).Format.Fill.ForeColor.RGB = RGB(0, 0, 255)
    End Select
Next
End Sub

如果链不是系列数据的一部分,则必须更改xVals设置的方式,但仍应适用一般原则:迭代系列中的点,检查参考列表,并根据参考项目应用特定颜色。