使用Excel进行随机抽奖?其实很简单 您所在的位置:网站首页 如何用excel随机抽取数据 使用Excel进行随机抽奖?其实很简单

使用Excel进行随机抽奖?其实很简单

#使用Excel进行随机抽奖?其实很简单| 来源: 网络整理| 查看: 265

在日常工作或者生活中我们会经常面对抽奖的问题,比如从100个人里随机抽4个不同的人儿送3万块津巴布韦币。这事有个专业的名词叫不重复随机抽样,意思是样本中的单位只能抽中一次,抽中的单位不再放回整体。

举个例子还是。

如下图所示,A列是人名,现在需要从中动态抽取4个不重复的人,模拟结果见C列。

图片

这样的问题,Excel解法有很多…很多……。打个响指,分享一下函数、Power Query、VBA、SQL等常用解法。

1  函数解

解法1:辅助列

对于大部分朋友而言,最简单的解法是使用辅助列。

B2单元格输入以下公式,向下复制填充,得到一列随机值。

C2单元格输入以下公式,复制填充到C2:C5区域。

公式依次从B列获取第1、2、3、4个最大值的索引号,以此从A列获取人名,返回结果模拟如下▼

解法2:数组公式

以下数组公式中使用COUNTIF函数判断A里人名是否存在结果区域中,如果不存在,则返回对应行号,使用SMALL函数从中随机取一个值,再使用INDEX函数返回对应结果。

By:Lf

公式写在C2单元格,蓝色部分是思路核心▼

=INDEX(A:A,SMALL(IF(COUNTIF(C$1:C1,A$2:A$28)=0,ROW(A$2:A$28)),RANDBETWEEN(1,27-ROW(A1)))

解法3:区域数组公式

使用RANDBETWEEN函数从2到999之间获取27个随机值,加权百倍后加上行号,再使用SMALL函数依次取最小值,使用RIGHT函数取出行号,最后使用INDEX函数根据行号获取结果。

需要说明的是这是一条区域数组公式,应先选中C2:C5区域后,在编辑栏输入公示后,同时按三键结束公式输入。

蓝色部分是思路核心▼

=INDEX(A:A,RIGHT(SMALL(RANDBETWEEN(1^ROW(2:28),999)/1%+ROW(2:28),ROW(1:4)),2))

解法4:动态数组公式

365版本才可用▼

=INDEX(SORTBY(A2:A28,RANDARRAY(27)),SEQUENCE(4))

RANDARRAY(13)生成13个随机值,SORTBY据此将A2:A14区域的数据排序,最后再使用INDEX函数取前4个即为结果——思路其实等同于辅助列。

2  Power Query解

生成一列随机值,排序后取前四即可。

3  VBA解

使用了洗牌法,参考代码如下:

代码解析见注释

4  SQL解

私信我关键字SQL,可以获取相关实战教程:

……

木了,今天和大家分享的内容就这些。

需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?私信我获取案例文件,我们一起来做不加班的职场人!!

 作者:EH看见星光



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有