作者:俞丹 转自:Excel之家ExcelHome
用图表展示项目进度,这个大家一定不会陌生,今天就和大家分享一个别开生面的充电图,不仅可以显示完成进度,还可以根据进度情况自动变色,实用又好玩哦。
话说,自那驴蛋蛋离家出走后,大花自此一蹶不振,茶饭不思,整日游手好闲玩手机。近日听说驴蛋蛋在华山已修炼成为一等一的高手,更收下别人家的美人无数。大花内心澎湃,不由琢磨着:”想我家驴蛋蛋都这么努力,宝宝不该拖后腿啊!”
然后就没有然后了。。。
于是乎,等宝宝丰富的内心戏演完,决定玩一个模仿手机充电。
来,我们看看效果:
特此说明: 此教程使用office2016版本,请2013版本以下朋友谨慎入坑。
1、 首先,准备控件。
(1)点击【开发工具】选项卡下【插入】,找到【表单控件】下的【滚动条】,点击画出一个滚动条。
右键单击滚动条设置控件格式,将单元格链接设置为D2,一气呵成。
2、准备数据源并制图
(1)手机电量B2单元格直接引用D2,这样能使数据系列的值随滚动条变化而变化。
选中B2:B3,插入选项卡下选择堆积条形图。
(2)在绘图区右键选择更改图标类型,选择第二种堆积条形图。
(3)双击坐标轴,在弹出的设置坐标轴格式内,设置最大值100,最小值0。
删除图表标题,坐标轴,网格线等元素,完成整体轮廓。
(4)添加数据标签:
B4=D2&"%"
数据标签使用文本框,引用B4单元格数值,并使用无填充无线条,字体设置为白色。
好吧,这一步我承认我偷懒了。
3、加入条件项。
如果需根据不同数值,显示不同颜色,那么设置条件如下:
则:
使用VBA实现图表的动态填充色。
(vba代码来自donata,万分感谢donata深夜两点帮我写代码,么么哒!)。
Private Sub Worksheet_Calculate()
'重新计算工作表或在图表上绘制更改的数据之后发生的事件
Application.ScreenUpdating = False
'关闭屏幕更新
ActiveSheet.ChartObjects("图表 1").Activate
'激活图表1
With ActiveChart.SeriesCollection(1).Format.Fill
'图表1的第一系列的填充格式,FullSeriesCollection是2013版本才有的,2010版本的代码是SeriesCollection
If Range("b2").Value > Range("b5").Value Then
.ForeColor.RGB = RGB(0, 176, 80)
'前景填充色
Else
.ForeColor.RGB = RGB(225, 204, 105)
End If
If Range("b2").Value <= Range("b6").Value Then
.ForeColor.RGB = RGB(255, 0, 0)
End If
End With
Application.ScreenUpdating = True
End Sub
最后,进行适当美化,完成。