excel如何实现随机抽取且不重复

急急急!!!
在表格中设置有组别、姓名、联系方式、编号等,需要在952人中随机抽取360人,分6次抽取 每次抽取40人 不得重复 。抽取后 需要将抽取的组别 姓名 联系方式 编号等复制到另外一个表格。本功人excel只会基础的一些东西,希望大神的回复尽量简单易操作。谢谢!
汗死 分9次抽取,每次40人,共360人

方法一:公式法

1、我们以生成1-10范围内的随机数字为例,讲述方法。

首先,在A2单元格中输入公式:=SMALL(IF(COUNTIF($A$1:A1,ROW($1:$11))=0,ROW($1:$11)),INT(RAND()*(11-ROW(A1))+1))

然后按下Ctrl+Shift+Enter三键结束数组公式。

2、然后,下拉填充公式到A12单元格,也就是填充11个单元格,为什么要填充11个呢,我们明明只要10个数字?这是因为,最后一个数字是不会变化的,所以呢,要生成10个随机数,需要填充11个单元格,同样的生成11个随机数的话,要填充12个单元格,除此之外,公式中的11还要改成12。

3、生成随机数后,每按下一次F9(或者其他单元格进行一次计算),随机数就会刷新一次,重新生成一组随机数,要注意喽!

4、好了,一组不重复的随机数字生成了,现在我们回头看看这个公式是怎么实现的吧。首先看Small函数的第一个参数,也就是数字区域,这里是利用if和Countif函数来实现此单元格上面的单元格区域,是否有当前单元格的数字,如果有,就返回False,而如果没有就返回这个数字,从而生成一组由上面单元格没有的数字和Flase组成的序列,下图是按F9得到的结果:

5、Small函数的第二个参数,也就是从这个序列中取第几个最小值,在得到的数字中,利用随机函数rand和row函数,实现在这有个个数中随机抽取一个数字,从而得到排序中这个数字顺序的一个数字。通过这样一个数组公式,就实现了生成一组不重复的随机数字啦。

方法二:VBA法

1、VBA功能强大,可以利用很多算法实现随机数。这里介绍一种简单的办法。首先在Excel中按下Alt+F11,打开VBE界面,双击要生成随机数的工作表,在右侧空白处需要输入代码。

输入代码如下:

Sub m()

Range("A:A").ClearContents'这里是A列,根据需要修改

For i = 1 To 10'这里是10个数字,根据需要修改

kkk:

Randomize

x = Int(Rnd * 10) + 1

If Application.CountIf(Range("A:A"), x) = 0 Then

Cells(i, 1) = x

Else

GoTo kkk

End If

Next i

End Sub

2、代码原理很简单,就是随机生成数字,如果A列中有了这个数字,就返回再次随机生成,一直到没有这个数字为止;利用循环生成制定数量的数字。

3、按下F5执行代码,就看到在对应的Sheet中的对应列,生成了一组随机的不重复的数字。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-14

1、如果数据在Sheet2 的A:D列,在Sheet2的A列前插入两列辅助列;

2、在左上角的名称框中,输入A2:A953,按Enter键,将A2:A953单元格选中,输入=RAND(),按Ctrl+Enter组合键结束,快速向A2:A953单元格中输入随机数(随机数的重复机率极低);

3、在B2单元格输入以下公式,然后向下填充公式,得到A列数据的排名(同样没有重复排名)

=RANK(A2,A:A)

4、在Sheet1的A2单元格输入以下公式,然后向右向下填充公式到D361单元格,得到由Sheet2工作表中随机取得的不重复的360行数据

=VLOOKUP(ROW()-1,Sheet2!$B:$F,COLUMN(B1),0)

公式表示:以当前行号在Sheet2的B列精确匹配对应行,并返回对应第2列(Sheet2的C列)数据。

 

5、因随机取数时,工作表只要输入一个数据,就会在“自动计算”中 重新得到一组数据,因此,可以将Sheet2的A列,“复制”并“选择性粘贴”为“数值”,避免数据不断变换。或者将“公式”选项中的“计算选项”设置为“手动”。

6、注意:通过RANDBETWEEN函数得到随机函数的方法,会出现重复数据,从而达不到既随机又唯一取数的目的,没有RAND得到一列不重复的随机数再排名来得科学有效。

第2个回答  2019-12-23
Excel中,由952组数据中随机抽取360组不重复的数据。

方法/步骤
如果数据在Sheet2 的A:D列,在Sheet2的A列前插入两列辅助列;
在左上角的名称框中,输入A2:A953,按Enter键,将A2:A953单元格选中,输入=RAND(),按Ctrl+Enter组合键结束,快速向A2:A953单元格中输入随机数(随机数的重复机率极低);
excel如何实现随机抽取且不重复
在B2单元格输入以下公式,然后向下填充公式,得到A列数据的排名(同样没有重复排名)
=RANK(A2,A:A)
excel如何实现随机抽取且不重复
在Sheet1的A2单元格输入以下公式,然后向右向下填充公式到D361单元格,得到由Sheet2工作表中随机取得的不重复的360行数据
=VLOOKUP(ROW()-1,Sheet2!$B:$F,COLUMN(B1),0)
公式表示:以当前行号在Sheet2的B列精确匹配对应行,并返回对应第2列(Sheet2的C列)数据。
excel如何实现随机抽取且不重复
excel如何实现随机抽取且不重复
5
因随机取数时,工作表只要输入一个数据,就会在“自动计算”中 重新得到一组数据,因此,可以将Sheet2的A列,“复制”并“选择性粘贴”为“数值”,避免数据不断变换。或者将“公式”选项中的“计算选项”设置为“手动”。
第3个回答  2014-10-21
假如人名在A列(从A1开始)

在B1输入=INDIRECT("A"&RANDBETWEEN(1,952))拉到B400
把得到得结果复制,右击选择性粘贴为数值,再点击数据,删除重复项目
PS可能选的超过360个,把多筛选的给删掉
这样不重复筛选的360个人都出来了,你自行把他们分开B1~B90 。B91~B180。。。。追问

我尝试了下 姓名是ok了 可是和姓名对应的编号 联系方式这些 我要怎么一起复制过去?

本回答被提问者采纳
第4个回答  2014-10-21
你好,E1输入=rand()
填充到E5
C1输入=INDEX($A$1:$A$5,MATCH(SMALL($E$1:$E$5,ROW()),$E$1:$E$5,0))
D1输入=INDEX($B$1:$B$5,MATCH(SMALL($E$1:$E$5,ROW()),$E$1:$E$5,0))
分别填充到C5和D5
F9按一次就随机抽取一次。
满意请采纳,谢谢。追问

必须是一次一次抽取么?无法一次抽取40 么?一次一次抽取 我抽取360 比较麻烦

必须是一次一次抽取么?无法一次抽取40 么?一次一次抽取 我抽取360 比较麻烦

追答

你可以在设置里面将抽取改为40试一下。

本回答被网友采纳
相似回答