数据透视表系列颜色基于行字段

时间:2015-09-04 13:19:52

标签: excel-vba pivot-table pivot-chart vba excel

透视图及其相关vba的新功能。但是我试图根据它们属于哪个省来改变条形图的颜色。我一直无法在图表中使用条件格式,所以我尝试了一个宏。由于我无法上传图片,我的表看起来有点像这样:

Prov/Name/Period/Value
ON: Name1, Dec14, 100
    Name2, Dec13, 200
BC: Name1, Dec14, 400
    Name2, Dec13, 600
SK: Name1, Dec14, 100
    Name2, Dec13, 2000

我的数据透视表在条形图中显示此数据,每个条形图的颜色相同。我希望所有属于BC行字段的系列都显示黄色,以突出显示它们与其余部分。到目前为止,我一直在手工做这个,我试图制作一个vba宏,但是甚至不知道从哪里开始引用图表的Prov行字段。

1 个答案:

答案 0 :(得分:0)

好的,所以你需要引用的图表上的项目是XValues。 XValues可以是数组或范围。出于某种原因,虽然你不能用xvalues(x)循环它。相反,您需要将其分配给变量,然后您可以遍历它并检查特定值。 请考虑以下代码。 哦,您可能需要将代码附加到数据透视图更改的任何事件。

Dim ch As ChartObject, Counter As Integer, XValueArr() As Variant

Set ch = Sheet1.ChartObjects("Chart 1") 'this is your pivotchart

XValueArr() = ch.Chart.SeriesCollection(1).XValues 'assign the XValues property to an array

'loop through the array and check the value
For Counter = LBound(XValueArr) To UBound(XValueArr)
    If Left(XValueArr(Counter), 2) = "BC" Then
    ch.Chart.SeriesCollection(1).Points(Counter).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2
    End If
Next Counter