用Excel随机抽取?其实很简单。

在我们的日常工作或生活中,经常会面临抽奖的问题,比如从100人中随机抽取4个不同的人,送出3万枚津巴布韦币。有个专业术语叫不重复随机抽样,是指样本中的单元只能抽取一次,抽取的单元不会放回整体。比如说。如下图,A列是人名,现在需要动态提取四个不重复的人。模拟结果见C栏。这类问题有很多Excel解决方案。发表意见,分享常用的解决方案,如函数、PowerQuery、VBA和SQL。1.是一个函数解。溶液1:辅助柱。对于大多数朋友来说,最简单的解决方法就是使用辅助柱。在单元格B2中输入以下公式,复制并填充它以获得随机值列表。=RAND()C2单元格输入以下公式,复制并填充到C2:C5区域。= index (a: a,match (large (b: b,row (a1),b: b,0)公式依次从B列获取第一、第二、第三和第四大索引号,从a列获取名称,返回结果模拟如下。解决方案2:数组公式使用COUNTIF函数判断a中的名称是否有结果区,如果没有结果区,则返回对应的行号,使用SMALL函数随机取一个值,然后使用INDEX函数返回对应的结果。By: LF公式写在C2单元格中,蓝色部分是idea core = index (a: a,small(if(countif(c $ 1:c 1,a $2: a $28) = 0,row (a $2: a $28))和rand之间。27行(A1))解法三:区域数组公式用RANDBETWEEN函数从2到999取27个随机值,用100倍加权,然后用SMALL函数依次取最小值,用RIGHT函数取出行号,最后用INDEX函数根据行号得到结果。值得注意的是,这是一个面阵公式。首先你要选择C2:C5区,然后在编辑栏输入宣传,按三个键完成公式输入。蓝色部分是思想的核心= index (a: a,右(小(rand between (1 row (2: 28),999)/1%+row (2: 28),row (1: 4)),2)。Randarray (27)),sequence (4)) Randarray (13)生成13个随机值,SORTBY据此对A2:A14区域的数据进行排序,最后使用INDEX函数得到前四个,实际上相当于辅助列。2.PowerQuery解决方案生成一个随机值列表,排序后可以选择前四个。设source = excel . currentworkbook(){[name = " Table 1 "]}[Content],随机值列=表。缓冲区(表。AddColumn(来源,“a”,eachNumber。Random())),结果=表。选择列(表。firstn(表。sort(随机值列,“a”),4),“name”)在结果3中,VBA解使用了洗牌法,参考代码如下:代码分析见注释subbyvba () dimr,I & amp;,t,x & amp,n & amp“随机化”随机种子初始化r =工作表(“数据源”)。range(" a2:a " &;工作表(“数据源”)。单元格(行。计数,1)。结束(xlup)。Row)'将学生叫出教室,加载数组rn=4 '并抽取4个人for I = 1 tonx = int(rnd()*(ubound(r)-I+1))+I '并从1~2位置随机抽取t=r(x,1)。1)=t '被抽中的学生站在第一排。next with worksheets(“VBA”)。选择。列(1)。安全。范围(" A1") = "结果"。范围(“a2”)。Resize(n,1)=r '将前四名球队(抽取结果)放入抽奖区EndWithEndSub。让我们看看下面的例子。我想筛选出华南地区的数据:4。SQL解决方案select top 4 name FROM[data source $]order byrnd(ASC(name)-TIMER())。