为 Excel 堆积条形图的点着色与表中分配的值相关

Posted

技术标签:

【中文标题】为 Excel 堆积条形图的点着色与表中分配的值相关【英文标题】:Colouring an Excel stacked bar chart's points in relation to a value assigned in a table 【发布时间】:2013-06-01 01:40:45 【问题描述】:

我正在尝试使用堆积条形图在 Excel 2010 中创建路线图/时间线。我在下面提供了一个图片链接,该图片应该可以用图表解释我的意图。我希望在图表中呈现不同的事件,并且应该根据它们的持续时间来绘制它们。事件越长,其相应的条就越长。

我已经设法构建了一个宏来创建我喜欢的图表。但是,我希望为其添加另一个功能。从下图中可以看出,原来的表格中有一个名为“Type”的列。它代表事件的状态,无论是已完成、已取消还是正在计划中。我的目标是让图表通过将条形着色为红色(如果已取消)、绿色(如果已完成)或蓝色(如果已计划)来表示此数据,具体取决于相关特定事件在其类型行中的值。

以下是“创建新事件视图”按钮使用的宏背后的代码。我想知道如何实现着色,最好是在这个相同的宏中,这样用户只需要点击按钮。

Sub CreateEventTable()

Dim timespan_start As Date
Dim timespan_end As Date
timespan_start = Application.InputBox("Type start date:")
timespan_end = Application.InputBox("Type end date:")

ActiveSheet.Shapes.AddChart(xlBarStacked, Range("E2").Left, Range("E2").Top).Select

With ActiveChart
  .SetSourceData Source:=Range("$A$1:$B$12, $D$1:$D$12"), PlotBy:=xlColumns
  .SeriesCollection(1).Values = Range("B2:B12")
  .SeriesCollection(1).XValues = Range("A2:A12")
  .SetElement msoElementLegendNone
  .ChartGroups(1).GapWidth = 31
  .SeriesCollection(2).ApplyDataLabels
  .SeriesCollection(2).DataLabels.ShowCategoryName = True
  .SeriesCollection(2).DataLabels.ShowValue = False
  .SeriesCollection(1).Format.Fill.Visible = msoFalse
  .Axes(xlValue).MinimumScale = timespan_start
  .Axes(xlValue).MaximumScale = timespan_end

End With
End Sub

这是图片的链接,希望能解释整体结构:

http://i.imgur.com/XzPoMiY.jpg

感谢您的宝贵帮助!如果认为有必要,我很乐意提供更多详细信息。

【问题讨论】:

您可以查看Peltier Tech Blog 以获得非常优雅的解决方案。 【参考方案1】:

这里最好的解决方案不是 VBA。您需要为图表创建多个系列,将它们重叠,并在它们符合条件时使用公式进行填充。自动更改,并且非常易于维护。

正如 Skip Intro 所说,Jon Peltier 是图表大师。

此链接将使您朝着正确的方向开始。

http://peltiertech.com/WordPress/conditional-formatting-of-excel-charts/

【讨论】:

以上是关于为 Excel 堆积条形图的点着色与表中分配的值相关的主要内容,如果未能解决你的问题,请参考以下文章

如何更改使用 Plotly Express 创建的堆积条形图的文本方向?

在数据集 Excel 中分配的最后一行不正确

如何配置柱形图的颜色?

ggplot2:3路交互堆积条形图的分组条形图

python中堆积百分比条形图的问题[重复]

如何根据列中的颜色为条形图着色