根据数值大小改变图表系列的颜色
1、假设有一个一季度的库存数据存放在sheet2工作表的A1:B4区域中,并且由这些数据生成了一张柱形图表.再假设目前的库存警戒值设定为50,如果超过这个值,希望图表中对应的柱子变成红色来提醒,不超过50时柱子显示绿色.
2、在sheet2工作表的底部标签上点鼠标右键,选"查看代码",调出该工作表的VBA窗口,把下面代码粘朽兽寡凛贴进去.Private Sub Worksheet_Change(ByVal Target As Range)x = Target.Rowy = Target.Column'数值改变的区域为B列的B2:B4时,生成新的图表If y = 2 And x > 1 And x < 5 Then Call 生成图表Target.SelectEnd SubSub 生成图表()ActiveSheet.DrawingObjects.Delete '先删除表中的所有图表'下面是生成图表并设置图表格式Set t = Charts.AddWith t .ChartType = xlColumnClustered .SetSourceData Source:=Sheets("Sheet2").Range("A1:b4"), PlotBy:=xlColumns '图表的源数据,其中最后一个参数表示系列产生在列 .Location Where:=xlLocationAsObject, Name:="Sheet2" '图表显示到sheet2工作表中End With'下面对B2:B4单元格的值进行判断,如果大于50就变成红色For i = 2 To 4 If Range("B" & i) > 50 Then b = 3 '大于50变红色(3是红色的代码) Else b = 10 '小于50为绿色(10是绿色的代码) End If ActiveChart.SeriesCollection(1).Points(i - 1).Interior.ColorIndex = b '设置图表的各个柱子的颜色NextEnd Sub从代码中可以看到,这是使用了sheet2工作表的Change事件来实现的,只要工作表中B2:B4区域中的数据被修改了,图表就会自动根据库存数改变颜色.通过上面两个步骤就已经可以实现这个功能了上面的例子中,每次改变数据区域的值,都会删除旧的图表,再生成一个新的图表,有的朋友不喜欢这样,希望只生成一次图表,以后数据改变时,只针对该图表改变颜色,这样图表中的其他设置不受影响.那么再看下面方法:
3、用下面代码可以实现执行下面代码前,必须先手工生成一张B2:B4区域的图表,且该图表在sheet2表中的图表ID为1(最好除这一张图表外,没有其他图表).Private Sub Worksheet_Change(ByVal Target As Range)x = Target.Rowy = Target.Column'数值改变的区域为B列的B2:B4时,生成新的图表If y = 2 And x > 1 And x < 5 Then Call 图表变色Target.SelectEnd SubSub 图表变色()ActiveSheet.ChartObjects(1).Activate '激活第一张图表'下面对B2:B4单元格的值进行判断,如果大于50就变成红色For i = 2 To 4 If Range("B" & i) > 50 Then b = 3 '大于50变红色(3是红色的代码) Else b = 10 '小于50为绿色(10是绿色的代码) End If ActiveChart.SeriesCollection(1).Points(i - 1).Interior.ColorIndex = b '设置图表的各个柱子的颜色NextEnd Sub
4、下面是改变颜色后的图表注意B2单元格与B4单元格中的数值是大于50的,所以图表自动改变了对应的柱子颜色为红色.