【问题标题】:Pivot Chart series color based on row fields基于行字段的数据透视图系列颜色
【发布时间】:2015-11-30 16:13:16
【问题描述】:

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

【问题讨论】:

  • 您是否尝试过在手动执行这些步骤时录制宏?这可能为您提供访问与 BC 关联的图表元素所需的语法。我的猜测是,您必须以某种方式遍历图表系列并区分哪个是 BC 来使用它。
  • 是的。但不幸的是,我无法在数据透视图上选择组。所以我找不到 BC 组的范围或等效项。我可以找到颜色变化和系列选择,但不知道如何将 BC 识别为系列中的一个组
  • 你能分享你的 XL 文件吗?
  • 我不确定该怎么做/我是否有权在此处附加文件
  • 如果您可以从保管箱或谷歌驱动器或其他东西提供指向它的链接,那会起作用。

标签: excel pivot-table pivot-chart vba


【解决方案1】:

好的,图表上您需要参考的项目是 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2021-09-02
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多