我正在尝试在Excel中创建一个Yamazumi图表,通过在堆叠条形图上将元素的时间堆叠在一起来显示作业的元素。我希望能够根据标签而不是我现在获得的彩虹色来为元素着色。例如,当它具有VA时,我希望VA中的所有元素在图中都是绿色的。这是excel中数据的一个示例。
走路并装载购物车NVA 6.35 Excel Data
我试过这个VBA代码,但似乎没有用。我可能不完全理解VBA如何使用变量。具体来说,seriesArray变量抛出错误。任何帮助,将不胜感激。 'code'Sub color_chart()
Dim pointIterator As Integer, _
seriesArray() As Variant
seriesArray = Worksheets("Chart1").ChartObjects(1).Chart.SeriesCollection(1).Values
For pointIterator = 1 To UBound(seriesArray)
If InStr(seriesArray(pointIterator), "VA") > 0 Then
ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
RGB(0, 255, 0)
ElseIf InStr(seriesArray(pointIterator), "NVA") > 0 Then
ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
RGB(255, 0, 0)
Else
ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _
Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
RGB(235, 235, 235)
End If
Next pointIterator
结束子'代码'
答案 0 :(得分:1)
据我所知,在面对这种情况时,你有两种选择:
制作新的'虚拟'要添加到图表中的系列,其中任何位置都与您的数据不对应。使用查找功能(例如index/match
)创建与您的类别相对应的其他列(' NVA',' VA',' Wate')。因此,如果您的数据屏幕截图位于A,B,C和D列中,请在E列中添加公式:
=IF(B2="NVA",C2,"")
并替换" NVA"对于每一列。 不幸的是,由于它处理系列的其他方式,这似乎不适用于您所希望的图形类型(堆积条)。它适用于其他图表类型(here's an example)
使用VBA。
.Chart.SeriesCollection([myseries]).Interior.Color = RGB(155, 187, 89)