分享

Excel动态仪表盘图表:VBA代码控制颜色变换

 部落窝教育BLW 2023-12-27 发布于四川

编按:今天来给大家分享一个随着数字变化仪表刻度颜色自动变化的动态仪表盘图。教程中会用到一段VBA循环语句。感兴趣的同学赶紧学起来吧!


今天要介绍给大家的图表叫“刻度颜色动态变化仪表盘图”,大概长成下面这样子!

这个图表的使用环境,是完成度、进度、占比类型的数据可视化展示。

初看这个图表,感觉很简单是吧?没有过多的辅助数值,也没有过多的操作,根据数据的变化而刻度指示颜色发生变化是它唯一的特色。用刻度颜色变化取代了普通仪表盘图表中的指针。

看着简单,但作者研究了半天,却只能想到用VBA来做。

下面就是制作步骤:

STEP1:制作图表源

在A1单元格输入“数据源”,在A2:A101单元格区域输入100个1,作为图表的占位数据;

STEP2:选中A1:A101单元格区域,工具栏插入——图表——环形图,得到下面的图表。

STEP3:完成比例

在C2单元格输入任何一个完成比例值,譬如65%。

STEP4:录入代码

按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启动宏的文件格式。

提示:

如果你在操作中发现改变C2数值后提示错误,不用慌张,问题很可能是当前的仪表盘图表编号与代码中的图表编号不一致。此处的代码中指定的图表编号是图表“1”。选中你的图表,右击鼠标,选择“指定宏”命令,从弹出的 “指定宏”对话框中的宏名中可以看到当前图表的编号。根据这个编号修改代码中的编号即可解决问题。

研究了很久,也许是“思路卡住了”,但是我还是没有想出这个图表不用VBA的制作方法,如果大家有方法的话,欢迎评论留言分享学习一下。

另外对于图表来说,适当让大家也接触一下VBA的做法,想不定哪天你用上了,也是好事一件嘛!


相关推荐:

如何用气泡图做一个多维对比图表?超详细教程!

Excel教程:如何制作带有层次和透视感的图表?

Excel教程:如何制作带有层次和透视感的图表?

八大查找函数公式,轻松搞定数据中的多条件查找

版权申明:

本文作者E图表述;同时部落窝教育享有专有使用权。若需转载请联系部落窝教育。 

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多