具体操作如下:
首先需要一个如下的数据结构。
唱票数G列区域,不能手动输入候选人票数,这样很不方便,所以我们需要一个窗体控件,用点击鼠标的方法来实现唱票。在“开发工具-插入-数值调节钮”下图3处,然后拖拽得到一个如下图的控件。(下图4处)
接着利用控件来控制G3单元格,即第一个候选人。
选中控件,点击鼠标邮件,在“设置控件格式-链接单元格-G3单元格”,这是点击控件的上下箭头,可以来控制单元格的票数。如下动图操作。
依此类题,选中控件,Ctrl+C/Ctrl+V复制出剩下的五个控件,然后将其单元格链接分别对应后几个候选人对应的单元格。如下图动图所示。
接着插入一个图表,将其置于底层,按动控件的箭头,图表的箭头就会随之移动,那么我们这个唱票系统的雏形就有了。看下图动图:
但小伙伴们对唱票系统有要求,要求前三名的图表柱子能自动变成红色。剩余的名次的柱子保持原有颜色。而且还要对每个候选人的唱票有最终的汇总数字表达。所以我们要在插入图表之间,对数据结构进行改进。这也是本例的难点。
在数据结构后面,新增前三名列(H列)和剩余名次列(G列)。然后将下面的公式复制到数据结构中,注意按ctrl+shift+enter来执行这个函数公式。然后在进行拖拽填充,这是系统会知道抓住候选人的前三名数字,不是前三名的候选人会用数字0来代替。
=IFERROR(VLOOKUP(G3,LARGE(3:8,ROW(1:3)),1,0),0)
具体操作如下:
=IFERROR(VLOOKUP(G3,LARGE(3:8,ROW(1:3)),1,0),0)
该公式是一个数组公式,注意ROW(1:3)控制选择需要变红的名词的个数,本例为前三名,如果要前六名变颜色,就要改为ROW(1:6).
Large函数来动态获取前三名的区域范围。
Vlookup来匹配候选人的数值是否能匹配前三名的数值区域,从而获得该数值。
IFERROR用让剩余没匹配的剩余(不是前三名的)数值为0。
G列这是候选人数据所在的列。
搞清楚这个公式,就可以对该数据模板进行随意按需的调整。
接着我们将不是前三名的数据显示在I列,所以利用如下公式即可搞定。
=IF(G3-H3>0,G3,0)
有了这两个辅助列,然后在插入堆积柱形图,然后对前三列的数据统一设置为红色,即可实现动态的前三名的柱形图显示。(看动图操作)
最难的地方搞定后,接下来开始对图表进行美化,调整图表的大小尺寸,固定坐标轴的最大高度,也就是唱票可能出现的最高值。
这里有些技巧:
拖拽图表大小的时候,按住alt键可以与单元格边缘进行吸附。
调整最后一个控件的位置,然后利用对齐按钮进行快速的对齐分距调整。
选中坐标轴,按ctrl+1可以快速打开坐标轴最大值设置窗口。
设置坐标轴最大值。
接着设置候选人对应的唱票数统计,在图表工具中插入对应的文本框。然后在编辑栏中输入=号,去引用G列对应的唱票数。再按住ctrl+shift进行快速的横向拖拽复制。
最后修改其他的文本框对应的单元格引用。然后美化图表,增加主次网格线即制作设计完毕。
最终效果如下:前三名会自动为红色。如果前三名票数一样,也会是红色。
总结:利用控件+函数+图表,就可以制作出一个非常专业的动态图表展现系统。本例的唱票系统就是一个典型,希望大家能够掌握
本文来自博客园,作者:大码王,转载请注明原文链接:https://www.cnblogs.com/huanghanyu/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具