Excel堆积条形图基于标签的不同颜色

我试图在Excel中创build一个Yamazumi图表,通过在叠加的条形图上堆叠元素的时间点来显示作业的元素。 我希望能够根据标签对元素进行着色,而不是现在获得的彩虹。 例如,当它有VA时,我想在图中VA的所有元素都是绿色的。 这是excel中数据的一个例子。

步行和加载车NVA 6.35 Excel数据

Excel数据

我已经试过这个VBA代码,但似乎并没有工作。 我可能不完全理解VBA如何使用variables。 具体来说,这个seriesArrayvariables会抛出一个错误。 任何帮助,将不胜感激。 '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 

End Sub'code'

据我所知,在面对这个问题时你有两个select:

  • 将新的“虚拟”系列添加到您的图表中,并在空白处添加与您的数据不符的空白。 使用查找function(如index/match )来创build与您的类别相对应的附加列('NVA','VA','Wate')。 因此,如果您的数据屏幕截图位于列A,B,C和D中,请在列E中添加一个公式:

     =IF(B2="NVA",C2,"") 

    并replace每个其他列的“NVA”。 不幸的是,对于您select的图表types(堆栈栏),由于其处理系列的其他方式,这似乎不起作用。 它适用于其他图types( 这里是一个例子 )

  • 使用VBA。

     .Chart.SeriesCollection([myseries]).Interior.Color = RGB(155, 187, 89)