excel学习库

excel表格_excel函数公式大全_execl从入门到精通

巧用Excel实现随机滚动抽奖

收到粉丝提问:请问excel能够实现50人滚动的抽奖名单但是却可以指定得奖人吗?

由于题主没有给到相关的名单,假设ExcelA列有50个名字,B2:B4为指定获奖人名字,想要通过函数公式来实现随机抽奖,从50人中抽取5人,其中3人为指定获奖人。

如下图所示:

我们可以借助辅助列,以及多种函数来设置抽奖功能,具体步骤如下:

步骤 1:标记指定获奖人并生成随机序列

首先,我们需要根据B列的指定获奖人,将A列中的名单标记出来,以便在后续步骤中能够确保他们被抽到;借助rand函数生成一个随机序列,用于后续的随机抽取。

因此,在 C2 中输入以下公式并向下拖动填充到 C51

=IF(COUNTIF($B$2:$B$4,A2)>0,RAND()/1000,RAND())

公式说明:

COUNTIF($B$2:$B$4,A2)>0:计算区域 $B$2:$B$4(即指定获奖人所在区域)中满足条件 A2 的单元格个数,若大于0,则表示为指定获奖人,将其标记出来。

RAND():用于生成随机序列,便于后续抽奖能够实现滚动抽奖的效果。RAND()/1000是为了让随机数尽可能的小一些,便于后续升序排序时,能够一直排在前面。

IF(COUNTIF()>0,RAND()/1000,RAND()):借助IF函数判断A列中是否存在指定获奖人。

若存在,返回更小的随机数(RAND()/1000),目的是让指定获奖人的随机值变得非常小,确保排序时他们总是在前面。否则,返回随机数RAND()

步骤 2:对随机序列排序

D 列对C列生成的随机序列进行排序,用于后续生成一个包含固定获奖人的随机抽奖表。在 D2 中输入以下公式并向下拖动填充到 D51

=RANK.EQ(C2,$C$2:$C$51,1)

通过RANK.EQ函数,用于对$C$2:$C$51中的数值进行排名,其中第三个参数“1”表示升序排序。

步骤 3:生成一个包含固定获奖人的随机抽奖表

E 列中生成一个包含固定获奖人的随机抽奖表。在 E2 中输入以下公式并向下拖动填充到 E6

=INDEX($A$2:$A$51,MATCH(SMALL($D$2:$D$51,ROW(A1)),$D$2:$D$51,0))

本例中获奖人为5人,因此,将该公式拖至E6即可。每次需要抽奖时,只需按下F9键,E2:E6单元格中的名字就会随机更新,并且始终包含指定的获奖人。

公式说明:

SMALL($D$2:$D$51,ROW(A1)):查找$D$2:$D$51区域内第 k 小的值,这里 ROW(A1) 返回 1,当向下拖动公式时,ROW(A1) 会依次变为 23 等,因此可以依次提取第二小、第三小的值,以此类推,用于实现提取前5个最小值的效果,确保指定获奖人总是被抽中。

MATCH(,$D$2:$D$51,0)):返回提取到的最小值在$D$2:$D$51区域中的位置(即第几行)。

INDEX($A$2:$A$51,):提取 D2:D51 列中指定最小值对应的 A2:A51 列中的值(即随机获奖人)。

步骤 4:对抽奖结果进行调整

其实在步骤3已完成了随机抽奖的全部设置,但由于刷新时,指定的获奖人始终显示在前三个单元格中,这样会显得比较刻意且不真实。

因此,需要对得到的结果做一个随机排序,这样就能让抽奖结果全部都是随机滚动的。

H7单元格输入这个公式:

=SORTBY(E2:E6,RANDARRAY(5))

其中,SORTBY用于根据一个或多个排序条件对数据区域进行排序。

使用SORTBY函数对抽奖结果按照RANDARRAY 函数生成 5 个随机数进行排序,随机打乱 E2 E6 范围内的内容,返回一个随机排列的结果。每次刷新,排序的结果都会有所不同。

我们可以将名单和设置抽奖过程的那些单元格列隐藏起来哦,只保留显示抽奖结果的部分,

不但能保留神秘感,而且看起来更美观哟~

通过以上步骤和公式,即可实现随机滚动抽奖,且可以指定得奖人的效果。如还有疑问,欢迎留言哦~

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接