繁体   English   中英

如何在Excel中控制各个饼图段的颜色?

[英]How can I control the color of individual pie chart segments in Excel?

我希望能够以编程方式控制饼图中各部分的颜色。 理想情况下,我的图表将基于一个3列表,其列为:数据值,标签和饼图颜色值。 颜色值将是在Access表单属性中看到的相同数字。

谢谢,

史蒂夫

Sub a()
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.SeriesCollection(1).Points.Item(1).Interior.ColorIndex = 7
End Sub  

您可以使用我在其他答案中发布的技巧来学习ColorIndex表示的颜色

也许在这些方面的东西?

Dim ws As Worksheet
Dim sh As Shape

Set ws = Sheet2
Set sh = ws.Shapes.AddChart '.Select

With sh.Chart
    .ChartType = xlPie
    .SetSourceData Source:=Range("Sheet1!$A$1:$B$3")

    For i = 1 To .SeriesCollection(1).Points.Count
        With .SeriesCollection(1).Points(i).Format.Fill
            .ForeColor.RGB = Range("C" & i).Interior.Color

            .Solid
        End With
    Next
End With

这将允许您使用填充按钮向单元格添加颜色,并将其用于细分。

也许它可以在使用VBA时完成,但在这里我提出了另一种解决方案,可以让你使用JavaScript 您可以使用名为Funfun的免费Excel加载项,它允许您直接在Excel中使用JavaScript代码。 话虽这么说,你可以使用像HighCharts.js或D3.js这样的库来绘制饼图并单独控制颜色。 以下是我根据您的描述制作的示例。

在此输入图像描述

饼图不同部分的颜色由电子表格中第三列的数据确定。 在这个例子中,我使用HighCharts.js来控制绘制这个图表。 控制颜色的具体代码如下所示。

  var pieColors =[];
  for(var i=1;i<data.length;i++){
    switch(parseInt(data[i][2])){
      case 0:
        pieColors.push('blue');
        break;
      case 1:
        pieColors.push('green');
        break;
      case 2:
        pieColors.push('orange');
        break;
      case 3:
        pieColors.push('purple');
        break;
      case 4:
        pieColors.push('red');
        break;
      case 5:
        pieColors.push('brown');
        break;
    }
  }

在这个例子中,我只是手动选择了六种颜色,但您可以通过JavaScript代码轻松生成特定范围内的随机颜色或颜色。

Funfun加载项还有一个在线编辑器,您可以使用您的代码和结果进行测试。 您可以在下面的链接中查看详细代码和此示例。

https://www.funfun.io/1/#/edit/5a4f4680c3a8a526caeec989

对结果满意后,可以使用上面的链接轻松地将结果加载到Excel中。 但是,当然,首先,您需要通过插入 - Office加载项将Funfun加载项添加到Excel中。 以下是一些屏幕截图,显示了如何将示例加载到Excel中。

在此输入图像描述

在此输入图像描述

披露:我是Funfun的开发者

首先,我知道可以做到。 BeGraphic有一个免费的Excel加载项,其功能是在spreadhseet中设置图表元素颜色。 看到:

这使用加载项。 我必须说结果令人印象深刻。 对于我自己,我需要更多Excel 本地的东西,许多其他人会发现这个选项是顶级的。

虽然来自Remou的VB选项和begraphic的加载项做了契约。 对我来说,或者至少是目前的项目,我需要一个基于Excel的解决方案(尽可能多的是可行的)。 与此同时,您和我自己可以通过VB,VBA,.Net和/或宏找到解决方法。 访问Jon P的网站以获取可用选项。

如果我发现' 更多 ' - 我会在此查询中将其传回去。

阿罗哈

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM