中企动力 > 商学院 > excel随机数函数
  • ?

    Excel快速生成不重复的1-N区间的随机数

    莫水风

    展开

    Excel中产生随机数的函数有两个,Rand函数和Randbetween函数

    Rand函数使用

    Rand()不带任何参数,表示生成一个0-1的随机实数,其后面小数点可以具体到15位,如下所示:

    Randbetween函数使用

    在单元格中输入=randbetween(1,20),产生的是1-20区间的随机整数

    如果我们现在想要生成一串数字,它是某个区间不重复的数据

    例1、生成1-10区间的不重复数据。

    如果想抽取其中的几个,例如5个,则在A列中输入函数=rand(),生成的是1-10区间的,有10个数,所以从A1填充至A10,总共10个随机数,然后在B列输入=rank(a1,a:a),需要几个就向下填充几个即可,得到的就是不重复的5个数据

    如果想得到10个不重复的随机数, 那只需要将B列填充10个即可,如下所示:

    例2,生成30-39区间的不重复随机数

    【30-39】区间共有10个数,所以在A列生成10个rand()函数,然后在B列输入公式

    =29+RANK(A1,A:A)即可

    例3,生成2000-3000能除以100的整数的随机不重复整数

    【2000-3000】中有11个,所以在A列填充11个rand()函数,然后在B列输入公式:=(19+RANK(A1,A:A))*100即可

    其他情况也都是举一反三的,本节完

    你学会了吗?为自己持续学习的态度点个赞呗!

    ---------------------

    欢迎留言,转发,关注,更多精彩内容持续更新中...

  • ?

    Excel函数公式:RAND、INDEX、MATCH、SMALL函数的另类应用技巧

    杭卿

    展开

    滚动抽奖,已经是不能再普通的话题了,常见的操作就是用一个箱子来完成……随着现代化的发展,现在的抽奖都用电脑控制来完成抽奖。如果我们想在Excel中制作一个建议的抽奖器,该如何去实现呢?

    一、效果演示。

    从演示中我们可以看出,中奖名单是随机的,没有规律性的,那么该如何去实现了?

    二、实现步骤。

    (一)、准备数据库。

    方法:

    1、将所有参与抽奖人的姓名录入Excel表格中。

    2、添加辅助列,并在辅助列输入公式:=RAND()。

    (二)、构建抽奖界面并进行抽奖。

    方法:

    1、在中奖名单单元格中输入公式:=INDEX(A:A,MATCH(SMALL(B:B,D3),B:B,0))。

    2、按F9键进行刷新,中奖名单就会不断变化,当需要时松开F9键即可。

    解读:

    1、滚动抽奖界面可以根据自己的实际情况去设定。完全根据自己的意愿。

    2、如果为一等奖,中奖人员为1名,暨一个单元格;二等奖2人,暨为2个单元格……也可以根据自己的实际情况来决定。

    3、公式=INDEX(A:A,MATCH(SMALL(B:B,D3),B:B,0))中,首先用SMALL函数读取D3单元格位置上的值,然后用MATCH函数对齐进行定位,然后用INDEX读取。因为RAND函数的主要功能是生成随机数,所以每次用SMALL函数读取的数不一样,用INDEX读取的名单也就不一样。

  • ?

    随机数函数Rand、Randbetween实战技巧—自动化分配监考员等技巧

    Shao

    展开

    在前期讲解随机数的函数之后,好多同学留言询问,随机数到底怎么使用?有没有具体的应用案例等……今天小编结合实际情况,对随机数的具体应用做一下具体讲解。

    一、随机数函数解读。

    1、生成0-1之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RAND()。

    2、如果要快速再次生成随机数,只需按F9键即可。

    解读:

    Rand函数没有参数,可以生成0-1之间的随机数,其小数位数可以精确到小数点后15位。

    2、1-N,N-N之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RANDBETWEEN(1,40)、=RANDBETWEEN(50,150)。

    2、如果要快速再次生成随机数,只需按F9即可。

    二、生成指定范围内的不重复随机数。

    1、1-10不重复随机数。

    方法:

    1、添加辅助列(辅助列1,辅助列2,1-10之间不重复随机数)。

    2、在辅助列1中输入公式:=RAND(),并复制生成的随机数。

    3、将辅助列1中的随机值以【值】的形式粘贴到辅助列2中。

    4、在1-10之间不重复随机数列输入公式:=RANK(D3,D$3:D$12)。

    5、以【1-10之间的不重复随机数】列为主要关键字进行升序排序。

    解读:

    1、将辅助列1的随机值以【值】的形式粘贴到辅助列2中的目的在于固定其值的变化,毕竟生成随机值的目的在于应用,如果一直处于变化状态,就是去了其目的和意义。当然,如果感觉辅助列1中的随机值不够“随机”,可以多按F9刷新几次即可哦!

    2、Rank函数的主要作用在于:返回某一个值在某一指定范围中的排序,如果多个值排名相同,则返回平均值排名。其语法结构为:=Rank(排序的值,排序值所在的范围)。

    3、如果万一生成的随机数有重复值,我们该如何去发现并有效解决了?其实方法比较简单哦,首先我们使用Countif函数判断当前值在当前范围中出现的次数,如果都为1,则表示不重复,如果有大于1的情况,说明有重复值,只需重复方法中的1、2、3步,直到Countif函数的所有返回值为1即可。本示例中Countif函数的具体公式为:=COUNTIF(D3,D$3:D$12)。

    2、1-N不重复随机数。

    方法:

    1、添加辅助列(本示例中已添加)。

    2、在辅助列1中输入公式:=RAND(),并生成的随机值以【值】的形式粘贴到辅助列2中。

    3、在辅助列3中输入公式:=COUNTIF(D3,D:D),判断生成的随机值是否有相同的情况,如果返回值大于1,则为重复,否则为不重复。重复的情况需要继续步骤2,直到所有的返回值为1即可哦!

    4、在辅助列1-N之间不重复随机数列输入公式:=RANK(D3,D:D)。

    5、以【1-N之间不重复随机数】为主要关键字进行【升序】排序。

    解读:

    1、数字N可以根据实际情况来决定,如果有N条件数据,所有的辅助列的值即为N行即可。

    2、由于系统对图片大小的限制,对演示动图进行了压缩处理,如果有不清晰的地方请结合操作步骤学习,或者在留言区留言讨论哦!

    3、50-100之间不重复随机数。

    方法:

    1、辅助列1、2、3的操作步骤相信大家已经掌握了,如果有掌握的请查阅前文中的相关解读。

    2、在1-N之间生成的不重复随机数列输入公式=RANK(D3,D:D)+49,并进行升序排序。

    解读:

    1、我们已经知道利用公式=Rank(D3,D:D)排序的结果值最小的值为1,而我们要生成50-100之间的值,所以只需在公式的末尾加50-1=49。暨范围中最小值减去1即可。

    三、应用示例。

    (一)、给考场分配监考员。

    步骤:

    1、准备监考员信息表并添加辅助列。

    2、生成不重复随机序号。

    方法:

    1、在辅助列1中输入公式:=RAND(),并将随机生成的值复制,以【值】的形式粘贴的辅助列2。

    2、在查重列输入公式:=COUNTIF(G3,G:G),如果得到的值全部为1,则说明没有重复值,如果得到的值有大于1的情况,重复步骤1。

    解读:

    此操作中用到了很多实用技巧,如果双击填充柄快速填充其他数据单元格,快捷键Ctrl+Shift+向下箭头快速选定表格内容等,大家在实际的操作中要主要掌握,如果数据量庞大,将非常的实用哦!

    3、生成考场号。

    方法:

    1、在不重复序号列输入公式:=RANK(G3,G:G)。

    2、以【不重复序号列】为主要关键字进行【升序】排序。

    3、在考场号列输入公式:=ROUND(I3/2,0)。

    解读:

    1、升序排序的目的在于形成新的序列,暨第二次随机将人组合在一起。

    2、示例中以两个人为一个考场进行人员分配。

    (二)、随机分配考场或分班。

    1、准备考生信息表会学生信息表并添加辅助列。

    2、生成不重复随机序号。

    方法:

    1、在辅助列1中输入公式:=RAND(),并将随机生成的值复制,以【值】的形式粘贴的辅助列2。

    2、在查重列输入公式:=COUNTIF(G3,G:G),如果得到的值全部为1,则说明没有重复值,如果得到的值有大于1的情况,重复步骤1。

    3、生成考场号或班级号。

    方法:

    1、以不重复序列号为主要关键字进行升序排序。

    2、在考场号列输入公式:=IF(I3<=25,1,IF(I3<=50,2,IF(I3<=75,3)))。

    3、在班级列输入公式:=IF(I3<=40,1,IF(I3<=80,2,IF(I3<=120,3)))。

    解读:

    1、其实分考场和分班公式的道理是相同的,考场一般情况下有25人,如果随机生成的不重复序号小于等于25,则为1考场,否则进行判断,如果小于等于50,则为2考场,以此类推,只是班级的人数稍多一点而已,40人。如果随机生成的不重复序号小于等于40,则为1班,否则进行判断,如果小于等于80,则为2班,以此类推……

    结束语:

    本文主要讲解了随机数的生成以及结合具体示例的应用,从随机数的原理到实际应用,阐述了随机数的应用价值,希望对各位亲的工作有所帮助和提高,学习过程中如果遇到任何问题,欢迎大家在留言区留言讨论哦!

  • ?

    Excel随机取值,给你三种解决方案

    友灵

    展开

    所谓随机取值,顾名思义,就是从一堆数里,随机抽取几个或几组数;常用于抽奖、抽查、数据随机分组等。

    举个栗子,如下图所示,A2:A21是EH培训学院的20名……男女。现在需要从中随机抽取3人,授予38红旗手的称号,并奖励老祝香吻一枚。

    解法1:辅助列法

    使用辅助列,解决此类问题,应是最简单较快捷的一种解法,基本上老少咸宜,稍有函数公式基础就可以掌握了。

    首先将C列作为辅助列,C2输入以下公式,并复制填充至C2:C21区域。

    =RAND()

    RAND函数生成大于等于0、小于1的随机数。

    其次,在E2单元格输入以下公式,复制填充至F2:F4区域即可得到抽奖结果了。

    =INDEX(A:A,MATCH(LARGE(C:C,ROW(A1)),C:C,))

    LARGE(C:C,ROW(A1)),随着公式向下填充,依次从C列里提取第1、2、3最大的数值;再使用INDEX+MATCH的查询套路得出结果。

    结果可能如下:

    耸肩,摊手:现在问题来了——请问老祝如何亲吻老祝呢?

    想想都太有挑战性了。哈哈哈

    解法2:一条公式

    好伐,打个响指,那能不能只用一条函数公式得出最终结果?

    当然也可以,只是稍显复杂。

    选取E2:E4单元格区域,使用数组三键(同时按下Ctrl+Shift+Enter)输入以下公式,即可得出结果。

    =INDEX(A:A,RIGHT(SMALL(RANDBETWEEN(1^ROW(2:21),99)/1%+ROW(2:21),ROW(1:3)),2))

    RANDBETWEEN(1^ROW(2:21),99),随机取得>=1且<99的20个整数,生成一维纵向内存数组,例如:

    {3;17;11;40;64;65;75;83;19;37;88;74;76;17;46;39;43;80;38;92}

    之后除以1%,将随机值放大百倍,再加上人名所在行的行号(+ROW(2:21)),使用SMALL函数依次从小到大取值,使用RIGHT函数重新取出行号,最后使用INDEX函数得出抽奖结果。

    敲黑板!注意这是一条区域数组公式。

    公式的计算原理其实是酱紫;

    我们把20位男女所在的行号,看成是座位号。我们对座位号随机加上不同的权重,然后重新进行排队(升序用small,降序用large),得到一个打乱了的座号排列结果,最后依次将人名取出即可。

    公式计算结果可能如下:

    ——挑眉!震惊!震惊!!老祝居然如何自恋!自吻3×2次。天啦噜~哈哈哈

    解法3:洗牌吧

    VBA的解法也有多种,最不用动脑的是字典法,但效率偏差,此处略过不提。

    嗯,分享下最有效率也最有扩展性的洗牌法。

    先讲个故事,憋走开……

    假设有一名班花,有一天早晨想斗地主,目前的情况很明显是一缺三,于是打算从全班20位同学里随机抽3人。班花把他们喊出教室,排成一字纵队。

    第一步,从20人里随机抽取1人。假设抽到的是排在第15位的“随风小妞”。把她揪出来,拖到第1位去,然后把原本排在第1位的某童鞋安排到第15位去。这样,就成功抽取了一名……牌友。现在是2缺2。

    第二步,从排在第2位和第20位之间的童鞋里再随机抽取一人——为什么不是从第1位开始抽呢?

    “随风小妞”举手回答说她已经被抽过了,不能被抽第二次(意思就是她不欠抽了)。

    假设这次抽到了排在第6位的“空空”,把她请出来,送到第2位去,再把原本排在第2位的某同学安排到第6位。现在是3缺1了。

    第3步,从第3位到第20位之间的童鞋再随机抽取1人,排到第3位去。这样,队伍里的前3名就是今天的牌友了。恩,加上班花,4人刚好,散队,打牌去。

    是的,现在,只要我们把上面的故事翻译成VBA代码,之前的示例问题也就解决了。

    代码如下:

    Sub ehkjxg()

    Dim r, i&, t, x&

    Randomize '随机种子初始化

    r = [a2:a21] '将学生喊出教室,装入数组r

    For i = 1 To 3 '抽3个人

    x = Int(Rnd() * (UBound(r) - i + 1)) + i

    '依次从第1~2……位置起随机抽取学生

    t = r(x, 1) '被抽中的学生出列

    r(x, 1) = r(i, 1) '前列的学生去被抽中学生的位置

    r(i, 1) = t '被抽中的学生站到前排去

    Next

    [e2].Resize(3, 1) = r’将队伍的前3名学生(抽取结果)放入抽奖区

    End Sub

    或许有人问,为什么一定要把抽出来的牌友放到队伍前面去?放到队伍后面行不行?另起一队行不行?其实都可以。

    这不是问题的关键。问题的关键在于,每抽出一位牌友,他原来的位置务必不能留空,可以由队前或队尾的人补进来。这样,随机取值的范围渐渐收窄,不白抽,亦不抽错。

  • ?

    Excel函数公式:含金量超高的随机数、不重复随机数生成技巧解读

    幼旋

    展开

    随机数,在我们的日常中的应用也是非常广泛的,那么,如何生成随机数,如何生成不重复的随机数,你真的了解吗?

    一、生成0-1之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RAND()。

    2、如果要重新生成,按F9刷新即可。

    解读:

    Rand函数没有参数,可以生成0-1之间的随机数,小数位数可以具体到15位。

    二、1—N、N—N+N之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RANDBETWEEN(1,20)、=RANDBETWEEN(50,100)。

    2、如果要重新生成,按F9刷新即可。

    解读:

    1、RANDBETWEEN函数具有两个参数,分别为随机数范围的起始值和终止值,包括起始值和终止值。

    2、从上述的两个示例中我们可以看出,随机数的生成技巧,但是,生成的随机数中有重复值,如果我们不需要重复值,该如何去操作呢?

    三、1-10不重复数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D$3:D$12)。

    4、对不重复列【排序】。

    四、1-N不重复随机数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D:D)。

    4、对不重复列【排序】。

    解读:

    数字N可以根据实际需要来决定,如果有多行,辅助列1和辅助列2的值也需要N行即可。

    五、20-40之间的不重复随机数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D:D)+19。

    4、对不重复列【排序】。

    解读:

    1、生成20-40之间的随机数,相对于生成1-N之间的随机数唯一不同之处在于公式:=RANK(D3,D:D)+19中加了19,所以大家要注意哦。

    2、生成N-N+X之间的数,辅助值的确定方法为N-1,例如生成20-40之间的数,加的值为20-1=19。

    六、200-400之间的不重复随机数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D:D)+199。

    4、对不重复列【排序】。

    结束语:

    通过上述示例的学习,相信大家对于各类随机数的生成已经有所掌握了,学习过程中,如果有新的意见或观点,欢迎大家在留言区留言讨论哦!

  • ?

    Excel 随机数函数RAND和排名函数RANK教程

    漂浮

    展开

    Excel的随机整数函数RANDBETWEEN可以制作抽奖器大家都知道,当然有个缺点大家也都清楚,就是生成的数据经常出现重复的,关键时刻,一人中奖好几次,是多么尴尬的事情,所以,今天小编要分享一个新技能—制作不重复的随机抽奖器。更多Excel学习和问题请加群:289393114、570064677

    案例数据表格如图中所示,如何从A列的员工列中随机抽出三名幸运员工,要一次搞定,不要出现一个员工出现多次的情况。

    StepA如果不考虑重复的问题,一个公式”=INDEX($A$2:$A$7,RANDBETWEEN(1,3))”就可以轻松搞定,可问题偏偏就出在了这里。

    StepB所以我们接下来要做的就是如何生成不重复的随机整数了。Excel中除了RANDBETWEEN函数可以生成随机数外,还有一个RAND函数可以生成随机数,不过是小数,所以重复的概率微乎其微,几乎可以说是没有重复的。所以我们首先要做的就是利用RAND函数生成一列随机数。在E2输入公式“=RAND()”,下拉填充至E7,为每位员工生成一个随机幸运数字。

    StepC小伙伴们都知道,INDEX函数行列参数只能为整数,所以我们需要将小数转换为整数,强烈推荐使用RANK排名函数来实现,因为每个数据是随机的,所以排名结果当然也是随机的,在F2输入公式“=RANK(E2,$E$2:$E$7)”,获取各位员工的随机排名整数。

    StepD最后一步,INDEX返回具体姓名。修改C2的公式为“=INDEX($A$2:$A$7,F2)”,由于每个人对应产生的整数都是随机的,所以公平性杠杠的!

  • ?

    EXCEL批量随机生成指定起止日期内的日期 随机数函数实例

    房小萱

    展开

    本图文案例教程 由本人所录制视频转制而成,喜欢看视频的同学请移步到头条号Excel880观看地址如下

    关键字:

    案例文件可到EXCEL880网站下载

    详细步骤图文演示如下

    1.案例情况

    2.效果如下

    3.取A,B之间的随机数

    通用公式 = rand()*(g$3-f$3)+f$3

    在Rand函数帮助里有讲rand()*(a-b)+b就可以求出a,b之间,把A,b换成自己的单元格即可,注意相对引用.

    4日期随机范围

    =randbetween(f$8,g$8)

    因为日期就是整数,我们只要用randbetween直接处理就好啦…换成你自己的单元格哦…

  • ?

    Excel中如何随机获得1到10之间整数?用这个公式轻松实现

    冰箱

    展开

    Excel中随机函数是rand,可以随机得到0-1之间的小数,即得到大于0但小于1的小数,而且该函数每次结果不一样。

    1、例如我们在单元格输入 =rand()

    2、得到结果

    3、当我们再次输入 =rand()时

    4、此时得到随机值是

    5、利用rand随机数的特性,我们可以利用公式 =INT(RAND()*9+1) 得到1-10之间的整数。 此处的int函数是取整的意思

    6、此时得到1到10之间的随机整数是

    同样的公式 =INT(RAND()*9+1) 每次得到的结果也是不一样,数值是1到10之间。快去试试吧。

  • ?

    Excel用Rand和RandBetween函数生指定范围且不重复的随机数

    痰盂

    展开

    在 Excel 中,生成随机数有两个函数,分别为Rand函数和RandBetween函数,前者用于生成 0 到 1 之间的随机数,后者用于生成指范围的随机数。它们生成的随机数中都会产生重复值,如果要生成不重复的随机数得用变通的方法,通常有两种方法,一种为先生成种子再生成不重复的随机数,另一种为用多个函数生成。以下就是Excel生不重复随机数和小数随机数的具体操作方法,实例中操作所用版本均为 Excel 2016。

    一、Excel随机数生成函数

    (一)Rand函数

    1、表达式:RAND()

    2、说明:RAND() 用于生成 0 到 1 之间均匀分布的随机数。如果要生成指定范围的随机数,表达式可以这样写:RAND()*(b-a) + a。

    (二)RandBetween函数

    1、表达式:RANDBETWEEN(bottom, top)

    2、说明:RandBetween 用于生成指定范围的随机数,bottom 为生成随机数的开始值,top 为生成随机数的最大值。例如:要生成 10 到 100 的随机数,可以这样写:RANDBETWEEN(10, 100)。

    二、Excel随机数生成的方法举例

    (一)用 RAND() 生成小数随机数

    1、选中 A1 单元格,输入公式 =RAND(),按回车,则生成一个小数随机数;再次选中 A1,把鼠标移到 A1 右下角的单元格填充柄上,按住左键,往下拖,则所经过单元格都用 A1 的值填充,按 Ctrl + S 保存,则每个单元格变为新生成的随机数;操作过程步骤,如图1所示:

    图1

    2、用 Rand() 生成指定范围的随机数

    假如要生成 1 到 100 的随机数。选中 A1 单元格,把公式 =RAND()*(100 - 1) + 1 复制到 A1,按回车,则生成一个 1 到 100 之间的随机数;同样方法往下拖并保存生成其它随机数,操作过程步骤,如图2所示:

    图2

    (二)用 RandBetween() 生成指定范围的随机数

    假如要生成 50 到 100 之间的随机数。选中 A1 单元格,把公式 =RANDBETWEEN(50, 100) 复制到 A1,按回车,生一个 50 到 100 之间的随机数;同样用往下拖并保存的方法生成其它随机数,操作过程步骤,如图3所示:

    图3

    三、Excel生成不重复的随机数

    (一)方法一:先生成种子再生成不重复的随机数

    1、生成不重复的小数随机数。选中 A1 单元格,输入公式 =RAND(),按回车,则生成一个随机数,把鼠标移到 A1 的单元格填充柄上并往下拖,然后 Ctrl + S 保存,生成其它随机数;选中 B1 单元格,输入公式 =RAND()*A1,按回车,则生成一个不重复随机数,同样方法往下拖并保存,生成其它不重复随机数;操作过程步骤,如图4所示:

    2、生成不重复的整数随机数

    A、假如要生成 10 到 100 之间的不重复随机数。把公式 =RANDBETWEEN(10,100) 复制到 A1 单元格,按回车,生成一个随机数;用往拖并保存的方法生成其它随机数;把公式 =INT(RANDBETWEEN(10,100)*A1/100) 复制到 B1 单元格,按回车,生成一个不重复的随机数,同样用往下拖的方法,生成其它不重复的随机数;操作过程步骤,如图5所示:

    图5

    B、公式说明:公式 =INT(RANDBETWEEN(10,100)*A1/100) 先用 RANDBETWEEN 求出 10 到 100 之间的随机数,然后乘 A1 中的随机数,再除以 100 以确保所求随机数在 10 至 100 之间,最后用 Int 函数取整。

    提示:这个方法不能确保绝对不生成重复的随机数,当每次生成的随机数有两组完全相同时,同样会生成重复的随机数。例如,A2 和 B2 生成的随机数与 A5 和 B5 生成的随机数相同,那么 B2 = A2 × RAND() 等于 B5 = A5 × RAND(),则在 B2 与 B5 生成的随机数相同。

    (二)方法二:用公式生成准确不重复随机数

    1、假如要生成 1 到 10 之间的不重复随机数。把公式 =SMALL(IF(COUNTIF($A$1:A1,ROW($1:$10))=0,ROW($1:$10)),INT(RAND()*(10-ROW(1:1))+1)) 复制到 A2 单元格,按 Ctrl + Shift + 回车,则生成一个 1 到 10 之间的不重复随机数;把鼠标移到 A2 的单元格填充柄上并往下拖,然后保存,则生成 1 到 10 之间的其它不重复随机数;操作过程步骤,如图6所示:

    2、公式说明

    A、$A$1:A1 中的 $A$1 表示绝对引用,A1 表示相对引用,即往下拖时,$A$1 始终不变,A1 则会变为 A2、A3 等。

    B、ROW($1:$10) 是对一组单元格的引用,返回一个 1 到 10 的数组,即 {1;2;3;4;5;6;7;8;9;10}。

    C、ROW(1:1)是对一个单元格的引用,返回一个一行一列的数组,往下拖时会变为 ROW(2:2)、ROW(3:3) 等。

    D、用公式求值查看公式执行过程

    选中 A2 单元格,选择“数据”选项卡,单击“公式求值”,打开“公式求值”窗口,单击一次“求值”,则计算一步。第一次单击“求值”,把公式中的 ROW($1:$10) 变为 {1;2;3;4;5;6;7;8;9;10},下面的求值步骤请看演示,如图7所示:

    E、逆向解析公式执行过程

    1)公式执行到最后一步变为 =SMALL({1;2;3;4;5;6;7;8;9;10},8},如图8所示:

    图8

    2)公式 =SMALL({1;2;3;4;5;6;7;8;9;10},8} 的意思是:从数组 {1;2;3;4;5;6;7;8;9;10} 中找出第8小的数,即为 8;也就是说前面步骤所要做的工作就要生成数组 {1;2;3;4;5;6;7;8;9;10} 和生成序号 8。

    3)IF(COUNTIF($A$1:A1,ROW($1:$10))=0,ROW($1:$10)) 负责生成数组 {1;2;3;4;5;6;7;8;9;10},INT(RAND()*(10-ROW(1:1))+1) 负责生成序号 8。

    4)COUNTIF($A$1:A1,ROW($1:$10) 是统计数组 {1;2;3;4;5;6;7;8;9;10} 每个元素在 A1 中出现的个数,A1 单元格为空,因此,统计结果全为 0,即{0;0;0;0;0;0;0;0;0;0},如图9所示:

    图9

    再看 A4 单元格中的同样步骤(选中 A4,打开“公式求值”窗口,点“求值”一直到与图9一样的步骤),第 1、3 个元素为 1,即 {1;0;1;0;0;0;0;0;0;0},为什么第 1、3 个元素为 1,其它元素为 0?,因为 1 和 3 已经生成了随机数,即 A2 和 A3 中的随机数,如图10所示:

    图10

    继续往后执行,1 会变为 False,0 会变 True,如图11所示:

    图11

    也就是为 False 的,就不会再从 ROW($1:$10)(即 {1;2;3;4;5;6;7;8;9;10})返回元素,如图12所示:

    图12

    当用 Small 从{False;2;False;3;4;5;6;7;8;9;10} 返回元素时,只从数字中返回,False 将被忽略。

    5)RAND()*(10-ROW(1:1))+1 表示生成 1 到 10 之间的随机,可参照 Rand() 生成指定范围(a 到 b)的随机数公式 RAND()*(b-a) + a;最后用 Int函数取整。

    3、如果要生成 10 到 100 之间的不重复随机数,公式可以这样写:

    =SMALL(IF(COUNTIF($A$10:A10,ROW($10:$100))=0,ROW($10:$100)),INT(RAND()*(90-ROW(10:10))+1)),如图13所示:

    图13

    按 Ctrl + Shift + 回车,则生成一个 10 到 100 之间的随机数,用往下拖的方法生成其它 10 到 100 之间的随机数,结果如图14所示:

    图14

    注意:把公式复制到 A11 单元格和公式中修改的项,如 $A$10:A10、ROW($10:$100) 和 90-ROW(10:10)。

  • ?

    Excel函数公式:Excel生成随机数,你会吗

    纠结

    展开

    随机数,在我们的工作中也是非常的常见,但是在Excel中如何生成随机数,得到我们需要的随机数呢?

    一、生成0至1之间的随机数。

    方法:

    在目标单元格中输入公式:=RAND()。

    二、生成1至10之间的随机数。

    方法:

    在目标单元格中输入公式:=RANDBETWEEN(1,10) 。

    三、生成10至100之间的随机数。

    方法:

    在目标单元格中输入公式:=RANDBETWEEN(10,100)。

    通过上面的三个示例,相信大家对RAND函数已经有了一定的了解,在我们的工作总只要加以灵活用于即可。

excel随机数函数

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP