您的位置  娱乐资讯

Excel VBA 之 随机抽取数据

  • 来源:互联网
  • |
  • 2020-01-18
  • |
  • 0 条评论
  • |
  • |
  • T小字 T大字

有时候我们在做统计的时候,可能会遇到提取样本的需求,提取样本最重要的当然是随机性,今天我就来讲一下该如何用VBA实现随机提取一些数据。

例子:从Sheet1随机抽取5名人员,名单填入Sheet2


例子

想到随机,那么我们一般就要用到Rnd函数,首先我们看一下官网上Rnd函数的介绍


官网Rnd函数介绍

一般来说,我们不用参数,那么Rnd返回值就是 [0,1)

那么我们要返回一个A到B之间的整数的话,就可以这样写:

Int(Rnd * (B - A +1) + A)

随机函数就介绍到这里,接下来,就要开始抽取了,由于不能抽到相同的数据,那么就要排除掉已经抽到的,我想到了用集合Collection,当然,字典Dictionary也可以。

首先,将Sheet1的数据加入集合

Dim con As New CollectionWith Sheet1    For i = 1 To .[A65536].End(xlUp).Row        con.Add .Cells(i, 1).Value    NextEnd With

然后,可以定义一个数组,用来存放样本

5

接下来,开始随机抽取

For i = 1 To NUM        Randomize        rndIndex = Int(Rnd() * con.Count + 1)        arr(i) = con(rndIndex)        con.Remove rndIndex    Next

最后,将数据写入Sheet2即可

Sheet2.[A:A].ClearContentsSheet2.[A1].Resize(NUM, 1) = Application.Transpose(arr)

效果如图:

最终效果

代码如图:

代码全貌

我将样本数量定义为常量NUM,这样做可以方便后期更改样本数量,只要修改一处即可。

其实还有一个随机抽取数据的方法,我们下期再讲。

848个Excel VBA 实用技巧,实例+详细解析,入门必看,建议收藏

Excel VBA 之 去除重复项

Excel VBA 之 年会抽奖小程序

Excel VBA 之 将txt文档批量导入至Excel

。。。


喜欢的朋友记得点赞关注哦,网友们如果在Excel中遇到问题都可以找我交流,也可以在评论区或私信告诉我你想看到的VBA办公教程,我将在下期分享给大家,以后不定期更新Excel VBA技巧!

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186
友荐云推荐
热网推荐更多>>