为 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 堆积条形图的点着色与表中分配的值相关的主要内容,如果未能解决你的问题,请参考以下文章