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

    Excel中将某列数据随机排序的方法

    庾沛山

    展开

    我们现在有一列数据,如下所示的A列数据,我们需要将A列数据随机排序,也就是将它们的顺序打乱,如何实现呢?本文将介绍一种实现方法,主要是借助辅助列来实现。本文所采用的Excel版本是2010版,各个版本的操作基本都是大同小异,希望大家认真总结经验,提高工作效率。

    小知识:RAND()函数是返回随机数的函数,不需要参数,返回值在0到1之间。

    生成随机数:

    在B1单元格中输入公式"=rand()" 生成随机数,然后将鼠标放到B1单元格右下角,当鼠标形状变成黑色实心十字的时候向下拖动进行填充,从而在B列生成一列随机数。

    转换数值格式:

    因为此时这列随机数单元格中仍然是公式,表格每次刷新就重新生成随机数,我们需要将这列随机数转换成数值格式,具体操作如下:将生成的这列随机数选中,在其上点击鼠标右键,选择“复制”,再在其上点击鼠标右键,选择”选择性粘贴”,勾选”数值”,然后点击”确定”

    此时,这列随机数单元格中就没有公式了,都变成了数值。

    进行排序:将这两列数据同时选中,再点击菜单栏的“数据”==》“排序”

    选择”主要关键字”为”列B”,意思是按B列的随机数排序,然后点击“确定”,即完成了排序。

    这样就将A列的有序数据进行了随机排序,再将B列内容删除即可。

  • ?

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

    Jijel

    展开

    滚动抽奖,已经是不能再普通的话题了,常见的操作就是用一个箱子来完成……随着现代化的发展,现在的抽奖都用电脑控制来完成抽奖。如果我们想在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读取的名单也就不一样。

  • ?

    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)”,由于每个人对应产生的整数都是随机的,所以公平性杠杠的!

  • ?

    WPS Excel:巧用随机函数rand和randbetween生成各种数据

    凌波

    展开

    rand和randbetween函数的本职工作是产生随机小数和随机整数。然而,应用巧妙的话,还可以获取随机姓名、随机时间,常见的抽奖神器、点菜神器、选择困难终结器等都可以用它们来完成。

    基础用法

    这两个函数都非常简单,“rand()”没有参数,返回0到1之间的小数,因此“rand()*100”可以得到0到100之间的小数;randbetween函数有两个参数,分别是最小值和最大值,使用它可以获得这两个值之间的整数。

    随机函数的结果不是确定,每次你重新打开excel表格,或按F9键都可以获得新的值。因此我们可以利用它来创建数据、辅助我们做各种选择。

    随机姓名

    当你想给家里的宝贝起名字,有几个比较中意的名字但又不知用哪个时,不如让老天爷来决定,用“=INDEX(姓名所在单元格,RANDBETWEEN(1,姓名个数))”公式随机生成一个。

    随机日期

    日期和时间也可以随机生成。日期在表格中是以数字形式存在的,1900/1/1是第一天,我们将日期设置为“数值”格式就可以看到这个值。然后将两个日期对应的数值设置为randbetween的参数就可以获得随机日期。

    谢谢阅读,欢迎点赞、评论、关注和点击头像。

  • ?

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

    卓成仁

    展开

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

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

    方法:

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

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

    方法:

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

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

    方法:

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

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

  • ?

    选择恐怖症患者,Excel随机函数来帮你

    米德尔斯伯勒

    展开

    在生活中,很大一部分人都有选择恐惧症,比如和朋友一起去吃东西,当朋友问到想吃什么时,你很多时候都会回答“随便”。在Excel中有两个随机数函数RAND和RANDBETWEEN,当你犹豫不决时,可以让他来帮你做决定。比如说现在有10套衣服,编号为1号至10号,你想随机挑选一件,这时候就可以使用RANDBETWEEN,这个函数可以生成两个指定数之间的一个随机整数,如下所示:

    =RANDBETWEEN(1,10)

    该函数的语法为:=RANDBETWEEN(起始值,终点值),是不是很简单?如果想要刷新生成的随机数,这时只要按下F9键,就会生成一个新的随机数哟。

    在RAND函数的帮助手册里提到,其只可以生成0至1之间的随机数,那么RAND函数要怎样才能生成1至10之间的随机数呢?这时就需要我们来回顾一下我们多年所学的数学知识了,要想生成a至b之间的随机数,我们使用RAND()*(b-a)+a!!如上面的例子中,我们改为:=INT(RAND()*(10-1)+1),和上面的结果是一样的,其中INT函数为对生成的数据进行取整。

    编号为数字很简单,但是如果想从编号A、B、C、D、E、F、G、H、I、J中挑选三个,又该怎么做呢?有句话叫:正难则反。正常的做法很难做到时,我们就可以变通一下,先把衣服的编号罗列在A列,然后在B列用RAND函数生成随机数,然后对B列进行排序,选取前三个即可。如下图所示:

    这时候也许有人就会问了,如果编号为A至Z,那么一个一个的输入不是很费劲呀,那么有没有一个方法可以实现快速的输入呢?我们之前就说过,Excel功能可是相当的强大,所以方法当然是有的啦。我们来看一组数字密码:52946 45230 50403,有人能破解这组数字密码的含义吗?

    要想破解这个密码,我们就来共同学习一下Excel里面的CHAR和CODE函数,这两个函数是一对好兄弟,二者如影随行,有其中一个就会同时出现另外一个。每一个字符都有一个数字码,而每一个数字码都代表唯一的字符。52946 45230 50403这三组就是数字码,通过他可以找到对应的函数。如下图:

    数字码可以通过CHAR函数转换为字符,那么字符也就可以通过CODE转换为数字码,如图所示:

    这时,我们在结合ROW及COLUMN函数就可以快速的生成连续的字符啦,是不是很方便。

    同时,使用CHAR函数还可以生成一些特殊字符,在某些时候也是很好用的,如下图所示:

  • ?

    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随机取值,给你三种解决方案

    Qiao

    展开

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

    举个栗子,如下图所示,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批量随机生成指定起止日期内的日期 随机数函数实例

    芷天

    展开

    本图文案例教程 由本人所录制视频转制而成,喜欢看视频的同学请移步到头条号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随机函数

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

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

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP