我正在研究一个Excel项目,并尝试格式化条形图的颜色(后来通过相同的推理设置饼图)以显示RED
,GREEN
或{ {1}}基于另一系列数据。数据范围是......
工作表:YELLOW
范围:Overview
这些值是百分比。根据它之间的百分比,我希望这些条形图为绿色,红色或黄色。
如果在100 - 90之间,格林 如果在89-70之间,黄色 如果在69 - 1之间,红色
以下是我的代码(条形图):
E15:E36
任何帮助将不胜感激!我对VBA一点也不熟悉,并且觉得完全不符合我的要素......
此外,饼图的相同功能是否可以通过相同的参数定义颜色?
提前感谢!!
答案 0 :(得分:3)
这里是一个vba函数,我用它来反转负条,所以它们是红色的。也许这可以改编:
该函数是从工作簿中的a模块中的子例程调用的,如下所示:
Sub FixTheGraph()
FormatGraph("Overview")
End Sub
这是功能。您可以将其粘贴到子例程下面:
Function FormatGraph(myWorksheet As String)
Excel.Sheets(myWorksheet).Select
Dim myChartObject As ChartObject
For Each myChartObject In Excel.ActiveSheet.ChartObjects
myChartObject.Select
Dim myPoint As Integer, valArray
With Excel.ActiveChart.SeriesCollection(1)
valArray = .Values
For myPoint = 1 To .Points.Count
'myVal = valArray(myPoint)
Select Case valArray(myPoint)
Case 0.9 To 1
With .Points(myPoint)
.Interior.ColorIndex = 1 '<change colour to suit
End With
Case 0.7 To 0.9
With .Points(myPoint)
.Interior.ColorIndex = 5 '<change colour to suit
End With
Case Is < 0.7
With .Points(myPoint)
.Interior.ColorIndex = 3
End With
End Select
Next
End With
Next myChartObject
Excel.Sheets(myWorksheet).Cells(1, 1).Select
End Function
答案 1 :(得分:2)
您要做的是图表类型xlBarStacked。然后给它三个系列 - 每种颜色一个。
在每个系列中,如果元素值在范围内,请使用该值,否则将series.Value元素设置为0.
由于您的范围是互斥的,因此每个条形图只有一种颜色。