2

我正在尝试使用堆积条形图在 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

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

4

1 回答 1

0

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

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

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

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

于 2013-10-30T22:33:54.723 回答