哈喽,大家好呀~
这个图表的使用环境,是完成度、进度、占比类型的数据可视化展示。
初看这个图表,感觉很简单是吧?没有过多的辅助数值,也没有过多的操作,根据数据的变化而变化是他唯一的特色。
看着简单,但作者研究了半天,却只能想到用VBA来做,大家有没有想到好的制作方法,可以在评论区告知哟!
下面是制作步骤:
STEP1:制作图表源
在A1单元格输入“数据源”,在A2:A101单元格区域输入100个1,作为图表的占位数据;
STEP2:选中A1:A101单元格区域,工具栏插入——图表——环形图,得到下面的图表。
STEP3:录入代码
按ALT+F11,打开VBE界面,选择图表所在代码区;
然后,在代码区,复制粘贴下面的代码:
Private Sub Worksheet_Change(ByVal Target As Range) '''工作表单元格值改变触发事件
If Target.Row = 2 And Target.Column = 3 Then '''如果Target行2列3,即C2单元格时,则
ActiveSheet.ChartObjects("图表 1").Activate '''活动工作表的图表1被激活
For i = 1 To 100 '''循环变量1-100,代表图表的100个数据点
k = k + 1 '''计数器,计算当前的百分比值
ActiveChart.FullSeriesCollection(1).Points(i).Select '''根据变量i,逐个选中系列的数据点
If (k / 100) <= Round(ActiveSheet.[C2], 2) Then '''如果当前累计的百分比值,小于等于完成度的值(四舍五入到小数点后两位)
With Selection.Format.Fill '''操作被选择的对象的格式
.ForeColor.RGB = RGB(77, 149, 179) '''填充色的RGB值为【77,149,179】
End With '''With结束语句
Else '''如果当前累计百分比值大于完成度的值
With Selection.Format.Fill
.ForeColor.RGB = RGB(217, 217, 217) '''填充色的RGB值为【217,217,217】
End With
End If '''If语句结束
Next i '''循环语句结束
ActiveSheet.[C2].Select '''从图表的选中状态中退出,选择C2单元格
End If
End Sub '''结束工程
现在,当我们改变C2单元格的百分比值,图表就可以动态显示了,是不是有点酷呢?
关闭保存的时候,记得要将EXCEL文件保存为.XLSM启动宏的文件格式。
好啦,以上就是今天的VBA制图法。
联系客服