根据范围有条件地更改Excel VB中条形图中各个条的颜色
我正在处理一个Excel项目,并试图格式化条形图的颜色(以及后来的饼图),以便根据另一个数据范围显示RED
, GREEN
或YELLOW
。 数据范围是…
表 : Overview
范围 : E15:E36
这些值是百分比。 根据它们之间的百分比,我希望酒吧被格式化为绿色,红色或黄色。
如果在100 – 90之间,绿色如果在89 – 70之间,黄色如果在69 – 1之间,红色
下面是我的代码(条形图):
Sub Macro2() ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Overview").Range("A15:A36") ActiveChart.SetSourceData Source:=Sheets("Overview").Range("A15:A36,B15:B36") ActiveChart.ApplyLayout (2) ActiveSheet.ChartObjects("Chart 3").Activate ActiveChart.Legend.Select Selection.Delete ActiveSheet.ChartObjects("Chart 3").Activate ActiveChart.ChartTitle.Select ActiveSheet.ChartObjects("Chart 3").Activate ActiveChart.ChartTitle.Text = "Rating Site Distribution" End Sub
任何帮助将不胜感激! 我对VBA一点都不熟悉,觉得完全不符合我的要求。
另外,同样的function是否可以在饼图中使用相同的参数定义颜色?
预先感谢!!
这里是一个vba函数,我用它来反转负杠,所以它们是红色的。 也许这可以适应:
该函数在工作簿中的模块中的子例程中调用,如下所示:
Sub FixTheGraph() FormatGraph("Overview") End Sub
这是function。 您可以将其粘贴到子例程下面:
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
你想要做的是一个图表typesxlBarStacked。 然后给它三个系列 – 每种颜色一个。
在每个系列中,如果元素值在范围内,则使用该值,否则将series.Value元素设置为0。
由于您的范围是互斥的,每个栏将只有一种颜色。