4

透视图及其关联的 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 行字段。

4

1 回答 1

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
于 2015-10-15T02:35:29.630 回答