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

Posted

技术标签:

【中文标题】基于行字段的数据透视图系列颜色【英文标题】: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 文件吗? 我不确定该怎么做/我是否有权在此处附加文件 如果您可以从保管箱或谷歌驱动器或其他东西提供指向它的链接,那会起作用。 【参考方案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

【讨论】:

以上是关于基于行字段的数据透视图系列颜色的主要内容,如果未能解决你的问题,请参考以下文章

mysql视图里面怎么新增一个全新字段,在原来表内没有这列

Drupal 视图在基于字段的显示中呈现重复行

基于 XML 字段创建视图

Excel中基于文本字段的数据透视表中的条件格式

SQL 视图(Views)

SQL VIEW(视图)