为Excel堆叠条形图着色';与表中指定的值相关的s点

为Excel堆叠条形图着色';与表中指定的值相关的s点,excel,charts,excel-2010,vba,Excel,Charts,Excel 2010,Vba,我正在尝试使用堆叠条形图在Excel 2010中创建路线图/时间线。我在下面提供了一个图片链接,可以用图表解释我的意图。我希望在图表中呈现不同的事件,它们应该根据持续时间绘制。事件越长,其相应条越长 我已经设法建立了一个宏,创建了一个我喜欢的图表。但是,我希望为它添加另一个功能。从下图可以看出,原始表中有一列名为“Type”。它代表事件的状态,无论是已完成、已取消还是正在计划中。我的目标是让图表通过将条形图涂成红色(如果取消)、绿色(如果完成)或蓝色(如果计划)来表示这些数据,这取决于特定事件在

我正在尝试使用堆叠条形图在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
以下是图片的链接,有望解释整体结构:


我感谢你无价的帮助!如有必要,我很乐意提供更多细节。

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

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

这个链接会让你从正确的方向开始

您可以查看一个非常优雅的解决方案。