Excel表格数据很多,我想从近2000组数据中随机抽样选100组,该怎么做? 我纯新手,求简单方法。

Excel表格数据很多,我想从近2000组数据中随机抽样选100组,该怎么做? 我纯新手,求简单方法。,第1张

比如,如果您的Excel有1000人,想从这1000个人当中抽出100个人来做样品,那么,如何做呢?当然,前提条件是,抽样出来的这100个人,不是重复的人。

我们可以使用的函数的方法和VBA的方法来解决上述或类似的难题。

说白了,所谓的抽样,无非就是取随机数的问题。

一、使用函数实现抽样

如不懂VBA,可使用如下的蓄意循环运算办法, 但理论上不是100%会成功的, 而且数字太多, 比较费时。

A1输入 =IF(SUM($B$1:$B$100)<>100,INT(RAND()*1000+1),A1)

B1 输入 =COUNTIF($A$1:$A4100,A1)

将A1:B1 下拖至 A100:B100

然后执行菜单 *** 作:工具 → 选项 → 计算→ 重复运算;打勾→ 最高次数 10000次→确定,A1:B100 便会不停运算。

如 运算 10000次后, 尚未成功, 可再按 F9, 再执行运算, 直至成功;如成功, 应即 马上将A1:A100 做黏贴值, B1:B100 清除内容, 及将重复运算脱勾, 完成。

二、使用VBA抽样的方法

条件为:1 至 1000内, 选 100个不重复的随机数(要正整数)。

由于需要不重复的变量, 所以必须要经循环程序去判断。

最简单的方法, 是执行宏, 可用如下的代码, 100个不重复的变量便马上显示在A1:A100

Sub 我的抽样()

 Dim xx(1 To 1000) As Integer

 For t = 1 To 100

rerand:

x = Int(Rnd() * 1000 + 1)

If xx(x) >0 Then GoTo rerand

r = r + 1

Cells(r, 1) = x

xx(x) = r

 Next

End Sub

在第一个表 sheet1 增加一列 C列

C2 =RAND() 然后 向下复制……

然后 再在 另外一个表中 输入如下公式:

A2 =INDEX(A$2:A$1000,MATCH(SMALL($C$2:$C$1000,ROW(1:1)),$C$2:$C$1000,0)) 然后 复制到 B2 然后 再一起向下复制20行 ……

需要 再选一组的时候 按一下F9 就可以了……

如果 一定要放在另外一张表上的话 那么 辅助列 就把辅助列复制到 第二张表上(与第一张具有相同的行数 比如 也是放在 C列 那么公式修改如下:

A2 =INDEX(SHEET1!A$2:A$1000,MATCH(SMALL($C$2:$C$1000,ROW(1:1)),$C$2:$C$1000,0)) 然后 再复制到B2 然后再一起向下复制 20行…… 其他如上……


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11253231.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存