所有图表中的图例均为相同颜色

时间:2016-09-16 06:38:50

标签: excel vba excel-vba charts pie-chart

Table 1 - E(40%),C(20%),D(20%),A(10%), B(10%),
Table 2 - D(60%),C(15%),A(15%),B(10%)
Table 3 -  F(40%),C(20%),A(10%),B(10%),D(10%),E(10%)

假设我将表3作为基础图表。如何在所有图表中按照%份额的降序排列A,B,C,D,E的相同颜色(不同表格中的图表) img

2 个答案:

答案 0 :(得分:0)

另一个优秀案例研究为什么饼图不是良好的数据可视化。

Excel根据订单分配饼楔颜色。根据所选择的颜色主题,第一个楔形(从12点开始)是蓝色,第二个是红色,第三个是绿色等。

切片的大小或其系列名称完全无关紧要。

如果您想按尺寸订购切片,则需要在所有图表中手动为系列A指定相同的颜色,或者使用宏来执行此操作。

当然,使用水平条形图会更容易,所有条形颜色都相同。然后,读者可以专注于数据值,而无需评估分散注意力的颜色,并在饼图和图例之间来回轻弹,以了解他们所看到的内容。

只是为了踢:一个有三个水平条形图的面板。快点告诉我:表3中第二小项的名称是什么?你能看出在条形图中看到的比在馅饼中容易多少吗?没有颜色,没有传说。

enter image description here

答案 1 :(得分:-1)

要保持相同颜色的宏。

首先在所有纸张中填充对应于A,B,C ... F的相同颜色的单元格。然后创建所有三个饼图并运行宏

Sub ColorPies()
Dim cht As ChartObject
Dim i As Integer
Dim vntValues As Variant
Dim s As String
Dim myseries As Series

 Application.ScreenUpdating = False
For Each sh In Worksheets
    sh.Activate
     For Each cht In ActiveSheet.ChartObjects
        For Each myseries In cht.Chart.SeriesCollection

            If myseries.ChartType <> xlPie Then GoTo SkipNotPie
            s = Split(myseries.Formula, ",")(2)
            vntValues = myseries.Values

            For i = 1 To UBound(vntValues)
                myseries.Points(i).Interior.Color = Range(s).Cells(i).Interior.Color
            Next i
SkipNotPie:
        Next myseries
    Next cht
    Next sh
Application.ScreenUpdating = True
End Sub