微信小伙伴想设计一个用于统计投票的系统,最好前三名能自动显示为红色,能显示唱票的总计。咨询了微信群里的office高手提供了一个超强公式,牛牛的搞定了这个问题。赶紧和小伙伴们分享一下。
具体操作如下:
首先需要一个如下的数据结构。
唱票数G列区域,不能手动输入候选人票数,这样很不方便,所以我们需要一个窗体控件,用点击鼠标的方法来实现唱票。在“开发工具-插入-数值调节钮”下图3处,然后拖拽得到一个如下图的控件。(下图4处)
接着利用控件来控制G3单元格,即第一个候选人。
选中控件,点击鼠右键,“设置控件格式-单元格链接-G3单元格”,然后点击控件的上下箭头,可以来控制单元格的票数。如下动图操作。
依此类推,选中控件,Ctrl+C/Ctrl+V复制出剩下的五个控件,然后将其单元格链接分别对应后几个候选人对应的单元格。如下图动图所示。
接着插入一个图表,将其置于底层,按动控件的箭头,图表的箭头就会随之移动,那么我们这个唱票系统的雏形就有了。看下图动图:
但小伙伴们对唱票系统有要求,要求前三名的图表柱子能自动变成红色。剩余的名次的柱子保持原有颜色。而且还要对每个候选人的唱票有最终的汇总数字表达。所以我们要在插入图表之间,对数据结构进行改进。这也是本例的难点。
在数据结构后面,新增前三名列(H列)和剩余名次列(G列)。然后将下面的公式复制到数据结构中,注意按ctrl+shift+enter来执行这个函数公式。然后再进行拖拽填充,这时系统会自动抓住候选人的前三名数字,不是前三名的候选人会用数字0来代替。
=IFERROR(VLOOKUP(G3,LARGE($G$3:$G$8,ROW($G$1:$G$3)),1,0),0)
具体操作如下:
=IFERROR(VLOOKUP(G3,LARGE($G$3:$G$8,ROW($G$1:$G$3)),1,0),0)
该公式是一个数组公式,注意ROW($G$1:$G$3)控制选择需要变红的名词的个数,本例为前三名,如果要前六名变颜色,就要改为ROW($G$1:$G$6).
Large函数来动态获取前三名的区域范围。
Vlookup来匹配候选人的数值是否能匹配前三名的数值区域,从而获得该数值。
IFERROR用让剩余没匹配的剩余(不是前三名的)数值为0。
G列这是候选人数据所在的列。
搞清楚这个公式,就可以对该数据模板进行随意按需的调整。
接着我们将不是前三名的数据显示在I列,所以利用如下公式即可搞定。
=IF(G3-H3>0,G3,0)
有了这两个辅助列,然后在插入堆积柱形图,然后对前三列的数据统一设置为红色,即可实现动态的前三名的柱形图显示。(看动图操作)
最难的地方搞定后,接下来开始对图表进行美化,调整图表的大小尺寸,固定坐标轴的最大高度,也就是唱票可能出现的最高值。
这里有些技巧:
1. 拖拽图表大小的时候,按住alt键可以与单元格边缘进行吸附。
2. 调整最后一个控件的位置,然后利用对齐按钮进行快速的对齐分距调整。
3. 选中坐标轴,按ctrl+1可以快速打开坐标轴最大值设置窗口。
设置坐标轴最大值。
接着设置候选人对应的唱票数统计,在图表工具中插入对应的文本框。然后在编辑栏中输入=号,去引用G列对应的唱票数。再按住ctrl+shift进行快速的横向拖拽复制。
最后修改其他的文本框对应的单元格引用。然后美化图表,增加主次网格线即制作设计完毕。
最终效果如下:前三名会自动为红色。如果前三名票数一样,也会是红色。
总结:利用控件+函数+图表,就可以制作出一个非常专业的动态图表展现系统。本例的唱票系统就是一个典型,希望大家能够掌握。