谁不在,随机抽奖就永远不会抽中他,这 Excel 公式得有多难?
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手
专栏Excel从入门到精通作者:Excel学习世界99币84人已购查看今天这个需求乍一听很难的,但如果巧花心思,用了变通的方法,就能四两拨千斤从一列数据随机抽取单元格,但是要剔除掉某个单元格,不让它出现,而其余单元格的随机出现概率依然相等。
案例:从下图 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"))。
下面就是随机抽奖效果。



