excel一次滚动太多_教用Excel你做摇号机,可以摇中500万那种

1bcce9caac26aec3001fc85d202e2722.png

(PS : 关注E小二公众号,回复“摇号机”,可获取现成摇号Excel文件)

又快到年底了,办公室的小哥哥小姐姐们又开始排练年会的节目了。作为办公室的搬砖er,肢体上贡献不了太多力量,那就只能为年会提供点技术支持吧。
先展示下Excel能实现的摇号效果。

d7ef25897b052ff1824fe0d03cd78b28.gif
展示1:单个中奖编号效果

b6e52b9ac032aa7687b7ccaa88c0cc65.gif
展示2:多个中奖编号效果

以下是正经教学部分(敲黑板)↓↓PART ONE随机抽中单个中奖编码
仅抽一个中奖编码做法比较简单,除了中奖编码,也可以换成人名,变成一个随机点名机,也可以是真心话大冒险的惩罚选项,或者直接换成1-6,变成一个Excel筛子。

步骤1:准备基础数据首先,我们要准备一个含所有摇号编码底表,放在一列。这里的摇号编码可以根据需要直接放员工姓名也可以放数字编码,但如果是数字编码最好将单元格格式修改为文本,这样1号也可以显示为“001”。示例中做了500个中奖号码。

4f9598e97ccad752b13f1228840e01e3.png

步骤2:准备抽奖页面
没有什么讲究,大家可以随意发挥。

b0f8e4c08bc1c379afc6cdb494b14d66.png

步骤3:在抽奖页面中奖号码处输入公式=INDEX(摇号编码!$C$2:$C$501, RANDBETWEEN(1,500),1)公式简介:INDEX(数据范围,行数,列数),可以返回指定位置单元格的数值。RANDBETWEEN(最小数,最大数),返回最小数和最大数之间的随机整数。
这两个函数结合起来,达到的效果即是返回在C2-C501这500个单元格范围内随机一个单元格的值。步骤4:抽大奖啦
按住F9中奖号码就可以开始滚动啦~(有些电脑可能需按住Fn+F9)PART TWO随机抽中N个不重复的中奖号码
很多时候我们抽奖会一次性抽取多个中奖号码,这时就不能再用上面的做法来做了,因为无法避免中奖号码重复被抽中的可能。这时就需要换一种思路来做。步骤1:准备基础数据
首先,我们同样需要准备含所有摇号编码底表。
此外需增加一列辅助列,在每个编号的旁边,即D列增加一个RAND公式生成的随机数。
然后在B列增加一列RANK函数对D列随机数的排序(示例中即为1-500)。辅助列建立好后可以发现,每编辑一次公式按一次F9,B列的排序就会全部刷新一次。公式简介:=RAND() 返回大于等于 0 及小于 1 的均匀分布随机实数。=RANK(数值,排序范围,降序0/降序1)返回数值在排序范围中的排序,默认降序可省略最后一个参数。

ebdcb2e9d7bfe2289fc0a9350a8fa16d.png

步骤2:准备抽奖页面

又到了发挥被做表耽误的艺术家特长的时候了。但这里有一点要注意的是,如果中奖号码较多需要分多列来展示,那么每列的公式都需要单独设置。示例中做了20个中奖号码,每列10个。

25ab045de21d20040cd3ceba3c4cb999.png

步骤3:在抽奖页面中奖号码处输入公式

示例中 A2 =VLOOKUP(ROW()-1,摇号编码!$B$2:$D$501,2,0)第二列 J2 =VLOOKUP(ROW()-1+ COUNTA($A$2:$I$11),摇号编码!$B$2:$D$501,2,0)其余单元格可下拉填充

8c81fda5e443202102ee351deb2a1b13.png

解释:

  1. 第一列中ROW()表示单元格所在的行数,A2单元格的ROW()-1为2-1=1,整个公式即通过VLOOKUP函数,去寻找在摇号编码B列中排序为1对应的C列摇号编码。往下填充函数,即去寻找排序分别为2、3、…到10对应的摇号编码。
  2. 第二列中的函数中增加了COUNTA函数,实际是为了在第一列行数排序编码上继续+1,J2单元格的VLOOKUP函数就会去寻找排序为11的摇号编码,往下推就是12、13…。

所以整个中奖号码区域实际就是返回中奖编码底表中排序为1-20对应的中奖编码。因为每按一次F9,排序都会重新随机刷新一次,这就达到了每次都从500个数中随机抽取20个中奖号码的效果。

步骤4:抽大奖啦
同样按住F9中奖号码就可以开始滚动啦~(有些电脑可能需按住Fn+F9)

PART THREE抽中一等奖就不能再参与特等奖啦
虽然这是个伤心的事情,让人回想起过去那些抽中安慰奖的年度,但是效果我们这些搬砖er还是要努力实现的。步骤1:准备基础数据
因为我们先抽一等奖,前部分数据与抽多个中奖号码的数据相同。
此外要准备的就是为了抽特等奖而准备的数据,逻辑是我们需要将已经抽中一等奖的号码标识出来并从抽选范围中剔除。

869b4f30ff9784b6f22f71cf0746d4ea.png

F列:首先我们在F列通过VLOOKUP与IFERROR配合使用判断这个编码是否已被抽中=IFERROR(VLOOKUP(C2,'摇号机3'!$A$2:$A$11,1,0),0)+IFERROR(VLOOKUP(C2,'摇号机3'!$J$2:$J$11,1,0),0)

  1. 如果编码没有抽中一等奖,VLOOKUP函数会返回#N/A,而IFERROR函数识别到#N/A时就会返回0,如果两列数同时为0,整个公式的返回值为0
  2. 如果编码抽中一等奖,VLOOKUP函数会返回中奖编码,而IFERROR也会返回对应编码,这时另一列中奖号码中不会再出现这个中奖号码所以返回0,整个公式的返回值为中奖编码

E列:为了再次随机抽取特等奖,我们还需要用到RAND函数产生的随机数,但需要排除掉已经抽中特等奖的号码,所以E列通过if公式判断如果F列等于0,则为rand()产生的随机数,如果不为0,则为1。E2=IF(F2=0,RAND(),1)A列:对E列排除所有1后的随机数进行排序A2=IF(E2=1,"",COUNTIFS($E$2:$E$501,">"&E2,$E$2:$E$501,"<>1")+1)
其中COUNTIFS函数表示E2-E501中不等于1且比当前单元格大的数的个数。因为一个数的排序等于所有比它大的个数+1,所以这里的COUNTIFS公式+1就表示这个数的序号。步骤2:准备抽奖页面(省略)步骤3:在抽奖页面中奖号码处输入公式
首先设置一等奖的公式,与PART 2中一毛一样,直接复制过来就行。
然后设置特等奖的公式=VLOOKUP(480,摇号编码!$A$2:$D$501,3,0)
这里VLOOKUP的第一个参数可以是1-480里面的任何一个,都可以获取一个没有抽到一等奖的中奖编码。步骤4:抽大奖啦
与前两个PART不一样的是,我们在抽完一等奖20个中奖号码后,不能直接再按F9直接抽特等奖,因为那样刚刚抽中的一等奖的20个编码又会开始变化。所以我们需要在确定了一等奖的中奖号码后,立刻复制并在原单元格粘贴为数值,然后再抽取特等奖,这样就大功告成啦~(所以模板要保存好哦)


总结:本来想着之前一直讲公式有点枯燥,今天来点有意思的,结果止不住又写了2000字。每次都很纠结,写多了觉得很啰嗦写少了怕大家看不懂(E小二心里苦啊)。

e6e1bcd303bb032db7585e0ca672277b.png

总之还是祝大家年会都能抽中特特特等奖吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值