在后台回复【阅读书籍】
即可获取python相关电子书~
Hi,我是山月。
上次我们用Python做了个抽奖界面:年会将近?赶紧学学如何用Python做个抽奖界面。
身边有朋友很有兴趣,但是他并不想学习Python,因此问我excel是不是也能做个类似的。
我想了想,确实,虽然python近年越来越被大众所知道,但还是有很多人并不了解。
基于此,打算开一个office办公系列,用来分享自己使用office过程中的一些经验,希望对大家有所帮助。
今天就来看看如何用excel做个抽奖界面吧~
效果👇:
excel文件已经打包好放在后台啦,有兴趣的在后台回复【excel抽奖】即可获取。
我们开始吧!
注意:山月用的office版本是专业版2016。如因版本不同导致的一些小差异,可自行调试。
参会人员名单和之前的一样:
下面我们先来捋一下思路。我们需要做:
从名单里抽取一个姓名,为了防止重名,最好带上工号。
点击开始抽奖,显示结果。
把结果界面稍作装饰。
1、抽取姓名
1、公式详解
在这步主要用到三个公式。
1)INDEX
功能:返回单元格区域中指定行列位置的值或值的引用。
语法:INDEX(array, row_num, [column_num])
参数:
Array:单元格区域
Row_num:返回值在单元格区域里的行数
Column_num:返回值在单元格区域里的列数
2)RANDBETWEEN
功能:返回位于两个指定数之间的一个随机整数。
语法:RANDBETWEEN(bottom, top)
参数:
bottom:将返回的最小整数。
top:将返回的最大整数。
3)VLOOKUP
功能:根据查找值在指定区域首列的行号,返回该行与指定区域里指定列形成单元格的值。
语法:VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
参数:
lookup_value:查找的值
table_array:查找的位置,以查找值所在列为首列
col_index_num:需返回数据在查找区域中的列号
range_lookup:选择近似匹配(1)或精确匹配(0)
2、目标实现
利用INDEX和RANDBETWEEN就可以实现随机抽取一个工号。
=INDEX(A2:A30,RANDBETWEEN(1,29))
然后可以利用VLOOKUP返回工号对应的姓名:
=VLOOKUP(D2,A2:B30,2,0)
最后我们可以通过&把两个值连接起来:
=E2&"("&D2&")"
结果:
2、点击抽奖
现在我们有了结果,剩下的就是通过一个按钮,来控制结果显示。
我们可以通过复选框来实现。
点击【开发工具】下的【插入】,选择【ActiveX 控件】里的【复选框】。
然后在某单元格位置点击鼠标左键,把复选框插入。
在插入了复选框后,我们在【设计者模式】下右击复选框,点击【属性】。
一般常用的属性设置如下:
设置完成后退出设计者模式,此时当我们左击复选框时,可以选择复选框是否打勾。
打勾时我们刚刚链接到的单元格会显示TRUE,不打勾则显示FALSE。
这样我们就可以通过IF判断单元格的值是否为TRUE来确定是否显示结果了。
比如我们把复选框链接到G2单元格:
=IF(G2=TRUE, D3, "坐 等 开 奖 !")
现在,我们勾选复选框时,G2单元格的值是TRUE,这个时候会返回D3单元格的值,也就是第一步我们得到的值。
反之,不勾选时会返回【坐 等 开 奖 !】。
3、处理界面
现在我们来处理一下结果。
首先,把结果公布的文字改一下,由【姓名(工号)】改成:【恭喜 姓名(工号)获得大奖!!!】,氛围感搞起来。
也就是在连接姓名与工号的时候改成这样:
="恭喜 "&E2&"("&D2&") 获得大奖!!!"
然后我们整理一下界面,整理后的效果如下:
这样已经完成啦~
如果你想更美观一点,可以去掉网格线和标题,甚至可以把其它不需要显示的单元格字体颜色变成白色。
去掉网格线和标题:
当然,你也可以把抽奖界面和数据处理放在两个工作表里。
山月已经把做好的表格打包好啦,有需要的在后台回复【excel抽奖】自取。
已经到底啦~(≧▽≦*)/~
往 期 推 荐



您的“点赞”、“在看”和 “分享”是我们产出的动力。