Excel中那些奇怪的函数之很有用的随机函数
在Excel的好几百个函数中,有一些比较奇怪的函数。其中,随机数函数可以称为最奇怪的函数了。它奇怪之处在于看上去没什么用(是啊,谁没事弄个随机数玩),但是其实很多应用场景还离不了。(实际上,所有的编程语言都会内置随机数生成机制)。
(顺便说一下,有好几个人问过究竟Excel有多少个函数,我没有准确的答案。我曾经做过一个不敢保证完整的统计,在Excel 2013中,有400多个内置函数)
我们先来说一下为什么我们需要随机数。
先引用一段英文网站上的答案(中文网站上没找着):
大意是说随机数重要是因为我们的现实世界非常复杂,以致于看起来是随机的。
这段话说的是真的😁,但是不一定对你有帮助。不过我们还是可以举出一些真实的场景,在这些场景中好像只能使用随机数:
A公司有许多门店,作为市场人员,要想检查门店的某些指标并分析,以制定后续政策,需要检查一部分门店(检查全部门店既无可能,又无必要),此时就需要随机来选择这一部分门店
我们有多个设备,但是执行某个操作只用一个设备即可。但是如果总是使用一个设备,就会造成这个设备的过度使用,加快设备的损耗。此时,最好随机选择设备的使用。
需要生成ID(例如SKU)。公司的物料ID有固定的格式,但是除了物料本身的属性及日期外,还必须有其他可以互相区分的信息,很多公司避免使用序号等有明显意义的信息,此时就需要使用随机数)
排名的需要。我们在讲排名的文章中介绍过一种“公平排名”的方法,必须要用随机数
这种场景在实际应用中还有很多,甚至在业务的分析和预测中都会用到随机数。(我们在以后,会专门介绍这方面的例子)。
接下来,我们为大家介绍Excel中的随机数,以及它们的一些变化。
Excel中有两个随机数函数:RAND和RANDBETWEEN。
RAND函数的语法如下:
=RAND()
这个函数不需要参数。这个函数返回一个0-1之间的小数,类似于:0.687841910389369。
RANDBETWEEN函数的语法如下:
RANDBETWEEN(bottom,top)
其中,bottom和top是两个整数,bottom要小于top。
这个函数返回bottom和top之间的一个整数:
我经常会用到这两个函数,因为上课时,我举得例子不能含有真实的数据,我就会用随机数代替。
随机数函数很简单,但是在实际中的场景我们对随机数的要求很可能跟这两个函数都不一样,这时就需要一些变化。
变化1 生成1-100之间的随机数
RAND只能生成0-1之间的随机数,而RANDBETWEEN只能生成两个整数之间的随机整数。要想生成1-100之间的随机数,可以使用下面的公式:
=1+RAND()*100
变化2 生成一半负数一半正数的随机数
RAND生成的都是正数,要想生成的随机数中一半是正数一半是负数,可以使用公式:
=RAND()*(IF(RAND()>0.5,1,-1)
这个公式使用了两个RAND函数,其中IF中嵌套的RAND函数负责判断正负号。如果这个随机数>0.5,就是正号,否则就是负号。
变化3 生成一个随机的字符
有时候我们要随机的字母(a,b,c,...),而不是随机的数字,可以使用公式:
=CHAR(RANDBETWEEN(97,122)
这个公式可以随机生成一个小写字母。如果使用公式:
=CHAR(RANDBETWEEN(65,90)
就可以随机生成大写字母。
这里的CHAR函数的作用将一个字符的ASCII码转换为相应的字符。从65-90是小写字母的ASCII码,而97-122是大写字母的ASCII码。
变化4 从一个区域中随机选择一项
下面的公式:
=INDEX(B2:B13, RANDBETWEEN(1,12))
可以从区域B2:B13中随机选取一项:
变化5 随机生成日期
日期就是数字,所以RANDBETWEEN就可以随机生成日期,只要给定起止日期:
=RANDBETWEEN(--"2020/1/1",--"2020/9/30")
这个公式就可以随机生成2020/1/1至2020年9月30日之间的日期。
我更习惯使用下面的公式:
=--"2020/1/1"+RANDBETWEEN(1,270)
公式中的--"2020/1/1"可以将一个文本表示的日期:"2020/1/1"转换为真正的日期。
好了,今天的分享就到这里了!想想看,你的工作中是不是有随机数的用武之地?