谁不在,随机抽奖就永远不会抽中他,这 Excel 公式得有多难?

谁不在,随机抽奖就永远不会抽中他,这 Excel 公式得有多难?

编码文章call10242025-08-23 0:55:081A+A-

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

今天这个需求乍一听很难的,但如果巧花心思,用了变通的方法,就能四两拨千斤。


从一列数据随机抽取单元格,但是要剔除掉某个单元格,不让它出现,而其余单元格的随机出现概率依然相等。


案例:


从下图 1 的姓名中随机抽奖,由于当天宋大莲请假,所以抽奖结果不要包含她,其他人的抽奖机会均等。


效果如下图 2、3 所示。


解决方案:


我先把公式一步步拆解给大家看,这样可以让大家更容易理解。


1. 在 C2 单元格中输入以下公式 --> 回车:

=RANDBETWEEN(1,12)


公式的作用是生成 1 至 12 的随机整数。因为 A 列中共有 12 个姓名,所以需要生成 12 个随机数。


按 F9,随机数就会自动随机刷新。


2. 在 D2 单元格中输入以下公式:

=INDEX(A2:A13,C2)


公式释义:

  • 在 A2:A13 中提取出排列位置为 C2 单元格的值的姓名。


这是按 F9 的效果。


接下来设置一个公式,将“宋大莲”强制显示为“詹姆斯下士”。


3. 在 E2 单元格内输入以下公式:

=--TEXT(C2,"[=10]1;0")


公式释义:

  • [=10]1:当 C2 单元格的值为 10 时,强制显示为 1;
  • 0:这里的 0 是个通配符,代表所有数值;意思是如果 C2 单元格不为 10 时,就显示数值本身;
  • --:text 函数的结果是文本值,-- 能把文本转换成数值


当 C2 的值为 10 时,E2 的值变成了 1。


4. 最后再根据 E2 的值设置 index 查找公式就可以了:

=INDEX(A2:A13,E2)


到了这里,不知道大家发没发现一个问题?


虽然我们已经成功让“宋大莲”不参与抽奖,但是由于“詹姆斯下士”自己和“宋大莲”都会显示成“詹姆斯下士”,这无疑就增加了“詹姆斯下士”的中奖机会,使得结果不公平了。


如何解决这个问题?很简单,让“詹姆斯下士”自己不参与抽奖就可以了。


5. 将 C2 单元格的值修改为:

=RANDBETWEEN(2,12)


公式释义:

  • 将随机数改为从 2 开始,这样在匹配的时候就不会匹配出排在第一的“詹姆斯下士”了,从而大家的抽奖机都一致,公平合理。


最后,我们只需将分解的公式合并成一个。


6. 在 C2 单元格中输入以下公式 --> 删除其他所有辅助列:

=INDEX(A2:A13,--TEXT(RANDBETWEEN(2,12),"[=10]1;0"))


下面就是随机抽奖效果。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4