从筛选到抽奖:Excel&WPS 动态数组函数让员工生日会更精彩
优秀创作者
全文约1451字;
阅读时间:约6分钟;
听完时间:约10分钟;
某工厂的车间文员小刘需要为全厂10月过生日的员工举办一场集中生日会。除了准备丰富多彩的节目和各种水果、零食外,活动还包括抽奖环节。由于员工人数众多,如果采用传统方式,即手写抽奖号码并分发给每位员工,将会非常耗时且费力。为了节省时间和成本,小刘希望直接使用电子表格制作一个简单的抽奖小程序,并在现场通过笔记本电脑投屏来进行抽奖。
需求分析
如果使用电子表格函数来实现抽奖功能,可以利用随机函数RAND()。但必须确保不会抽到重复的获奖者,因为每个奖项只能由一名员工获得,不允许重复领奖。为了解决这个问题,可以采用随机排序的方法。
具体来说,假设需要从100名员工中抽取5名获奖者,即中奖率为5%。这时可以通过结合使用 SORTBY 函数、TAKE 函数(或类似功能的函数)以及 RAND() 函数来实现。操作步骤如下:
首先,为每位员工生成一个随机数。
然后,根据这些随机数对员工列表进行排序。
最后,选取排序后的前5位员工作为获奖者。
这样,每当按下F9 键刷新工作表时,就会产生一组新的随机数,并重新排序员工名单,最终选定前5名作为本轮抽奖的幸运儿。这种方法简单有效,能够避免重复领奖的问题。
生日人员
第一步是确定当月(10月)过生日的员工名单。为此,可以调出《员工信息表》,并利用Excel中的日期函数来动态筛选出生日在当月的员工,从而避免每月手动筛选的麻烦。关键信息包括员工姓名和生日(格式为MM-DD)。可以使用以下公式进行筛选:
G2=FILTER(A2:A355,--LEFT(E2:E355,2)=MONTH(TODAY()))
公式解释:
A2:A355 表示包含员工姓名的列范围。
E2:E355 表示包含员工生日(格式为MM-DD)的列范围。
--LEFT(E2:E355, 2) 从生日列中提取月份部分,并将其转换为数值类型。这里使用了两个负号(--)来进行类型转换。
MONTH(TODAY()) 返回当前日期的月份。
FILTER 函数根据条件筛选出符合条件的员工姓名。在这个例子中,条件是员工生日的月份等于当前月份。
这样设置后,每当打开或刷新工作表时,该公式会自动更新以反映当前月份过生日的员工列表,无需手动筛选。
抽奖界面
此时可以新建一个页面,并设计相关背景,把抽奖的公式设计在最中间即可。找到一张背景图片(抽奖啦)放置在页面中上方,并在下方五个水平单元格分别录入“幸运儿1、幸运2、……直到5 ”,同在幸运儿1下方录入以下动态数组函数:
=LET(G,员工!G2#,TOROW(TAKE(SORTBY(G,RANDARRAY(ROWS(G))),5)))
公式解释:
员工!G2# 引用了《员工信息表》中包含员工姓名的整列(从G2开始)。
RANDARRAY(ROWS(G)) 生成一个与G列行数相同的随机数数组。
SORTBY(G, RANDARRAY(ROWS(G))) 根据生成的随机数对员工名单进行排序。
TAKE(..., 5) 从排序后的列表中选取前5个结果。
TOROW(...) 将选取的结果转换成一行显示。
LET 函数用于定义变量G,使公式更简洁易读。
这样设置后,该公式会自动从员工名单中随机抽取5名获奖者,并以一排的形式展示出来。每次刷新或按F9键时,都会重新执行随机抽选过程。
到这里,一个简单的抽奖函数公式就设计完成了。
今日总结
通过上述步骤,小刘成功地为全厂10月份过生日的员工设计了一场既高效又有趣的集中生日会。利用Excel&WPS的强大功能,特别是随机函数 RAND() 和动态数组公式,不仅避免了传统抽奖方式带来的耗时费力问题,还确保了抽奖过程的公平性与透明度。通过 FILTER 函数自动筛选出当月过生日的员工名单,大大减少了每月手动操作的工作量。
而在抽奖界面的设计上,结合背景图片和简洁明了的单元格布局,使得整个抽奖环节更加生动有趣。最后,使用 LET、SORTBY 以及 RANDARRAY 等函数组合而成的动态数组公式实现了自动化抽奖,只需简单刷新即可快速产生获奖者名单。这种方式不仅节省了时间和成本,同时也提升了活动组织效率,为员工们带来了更多欢乐。小刘的方法为类似场合下的活动策划提供了实用且创新的解决方案。
创作者俱乐部成员