【Excel公式教程】来讨论一个关于随机数的问题……

公众号回复2016   下载office2016

有群友提问:

我想做个随机变量,一共8个数值,要求这8个数不重复且从小到大排序,这8个数的取值范围在(1-32),咋做?

针对这个问题,做了一个效果图,大家看看。

8个数字随机变化,从小到大排序,并且取值在1-32之间。

如果要实现这个效果,可以使用公式或者VBA。

VBA的方法咱们就不说了,如果直接使用公式的话,需要一个比较复杂的数组公式才行,今天咱们要讨论的是利用辅助列实现这个效果,对于大多数只会一点函数的朋友都可以掌握。

辅助列1:随机函数RAND

这一步很简单,输入公式:=RAND(),然后下拉填满32个单元格即可。

知道为什么是32个单元格吗?

仔细看看题目可能就明白了。

辅助列2:排名函数RANK

在随机数右边输入公式:=RANK(A1,$A$1:$A$32)

看到RANK函数的结果,估计你就明白为啥是32个随机数了。

说白了,就是要得到取值范围在(1-32)的随机数。

得到结果:SMALL从小到大排序

有了前面两个辅助列,再用公式=SMALL($B$1:$B$8,ROW(A1)),下拉八个单元格就能得到需要的结果。

三个简单的公式就解决了这个随机数问题,下面再对这其中的原理做简要说明。

原理解析

解读题目时,要注意到这么几个关键点:8个数字(这是结果的个数),从小到大排序,数字的范围是1-32,随机且不重复。

要得到8个不重复的随机整数,是可以直接用公式的,这里提供一个思路:
【Excel公式教程】生成指定范围不重复随机整数,这个公式你看得懂么?

如果不禁止使用辅助列的话,不重复随机数通常都是使用RAND先得到指定个数(本例是32个)的随机数,然后再用RANK函数对32个随机数做排名(升序降序都没关系),得到的排名就是指定范围的随机且不重复的整数。

最后要从这32个数字中再找出来8个从小到大排序,这就是SMALL函数的功能了,如果是从大到小的话,用LARGE函数就行了。

这两个函数的用法在以前的教程详细介绍过。

菜鸟的函数修炼之——常用统计函数(下篇)

今天的问题很基础,希望各位初学者朋友能够实践一下,掌握解决这类问题的思路,同时对于涉及到的相关函数也能有更好的理解。

最后推荐两篇类似问题的教程:
【Excel函数应用】随机安排不重复人员该怎么弄排班表?
【Excel公式应用】有四个名字需要随机出现其中的一个该用什么公式?

(0)

相关推荐