遇事不决?用RANDBETWEEN函数就对了~

职场   2024-12-02 07:51   福建  

Hi,大家好,我是星光。

外面下雪了,你看到了吗?我打开Excel用函数掐指一算,你可能看到了,也可能没看到,两者概率各占50%

=RANDBETWEEN(1,2)

但我窃以为你应该看到雪的概率至少不低于70%,所以我打开Excel又掐指一算~~~~嘿~成了~


公式看不全可以左右拖动...▼
=IF(    RANDBETWEEN(1, 10) <= 7,    "雪花飘飘",    "雪未至")


见字如上👆今天给大家分享的表格技巧是RANDBETWEEN等随机函数。

RANDBETWEEN是一个充满了占卜欲望的函数,可以生成指定区间的随机整数。

=IF(    RANDBETWEEN(1, 10) <= 7,    "看到了",    "没看到")

用以上公式为例,RANDBETWEEN函数生成1和10之间的随机整数,然后判断随机值是否小于等于7。1~10共有10个可能结果,1~7占所有可能性的70%,以此作为你看到雪的概率。


看我真诚的小眼神,当你遇到一个事儿,犹豫不决,那么用RANDBETWEEN函数就对了

譬如说罢,不知道要不要给暗恋对象打个电话?

=IF(    RANDBETWEEN(0, 1),    "打又怎么滴?",    "算了吧还是")

夜渐深了,但还是不知道该临幸哪位贵妃?


=INDEX(    {"静妃"; "淑妃"; "丽妃"; "华妃"; "惠妃"},    RANDBETWEEN(1, 5))


……

打个响指,你醒醒。关于RANDBETWEEN函数,我再举6个常见的不常见的简单的烧脑的骚包的例子,内容涵盖了按指定占比造假数据、随机抽奖、随机发红包、生成指定总和的随机值等。

1)难度


如上图所示,某校有一位名叫陈二肥的教师,需要在B列生成一组随机的虚拟的学生评级,评级内容为优秀/良好/及格/不及格。

公式看不全可以左右拖动...
=INDEX(    {"优秀", "良好", "及格", "不及格"},    RANDBETWEEN(1, 4))

2)难度 


如上图所示,假如有一个叫看见星光的人,打算从A列的名单中随机抽取4个不同的人发放10万美金——不是心如不是品如只是假如。

C2单元格输入以下动态数组公式:

公式看不全可以左右拖动...
=INDEX(    SORTBY(        A2:A13,        RANDARRAY(COUNTA(A2:A13))    ),    ROW(1:4))

公式先使用RANDARRAY函数生成一组随机值,依此作为排序依据,对A列的人名打乱排列顺序,然后提取前4人。



3)难度 


如上图B列所示,那个叫看见星光的家伙抽完奖后,又打算发500块钱的红包,发给12个人,金额随机,换而言之,就是生成一组指定总和为500的随机值。

B2单元格输入以下动态数组公式:

=LET(    _x, RANDARRAY(12),    MAP(_x, LAMBDA(_y, _y / SUM(_x) * 500)))

公式先使用RANDARRAY函数成12个随机值,然后计算每个随机值在总和中的占比,用占比乘以500,也就是每个人红包的随机金额。



4)难度 

看见星光发完红包之后,被领红包的人骂了。摊手,有的人领了400块钱,有的人却只领了0.1元,这看起来的确是一件很不公平的事。于是看见星光打算改一下红包随机金额的生成规则。这次发5W元的红包,每个人的随机金额限制在3K~5K之间。


B2单元格输入以下公式,向下复制填充到B13单元格:

=IF(    SUM(B$2:B$13) = 50000,    B2,    RANDBETWEEN(3000, 5000))

公式先判断B2:B13区域的总和是否等于5W,如果相等,则保留B2原值,否则在3000~5000之间生成一个随机值。


公式使用了迭代计算,依次点击「文件」→「选项」→「公式 」公式,勾选启用迭代计算,并修改迭代次数▼


5)难度 


还记得吗?上面有个名叫陈二肥的老师数据造假,后来他的行为被校长发现了。

校长认为这事必须严肃认真处理——校长认为数据可以随机,但不能这么随机,万一全部不及格或者全部优秀就太假了。

如上图所示,在B列生成随机的虚拟成绩(1-100之间的整数),同时要求不及格(60以下)占比20%,良好(60~80分)占比50%,优秀(80+)占比30%

B2单元格输入以下动态数组公式:

公式看不全可以左右拖动...
=SORTBY(    MAP(        SEQUENCE(10),        LAMBDA(_x,            LOOKUP(                _x,                {0, 3, 8},                RANDBETWEEN({1, 60, 81}, {59, 80, 100})            )        )    ),    RANDARRAY(10))

公式先使用SEQUENCE函数生成1-10个数字,然后使用LOOKUP函数将这10个数字划分到3个区间:{0, 3, 8}。其中0~2为一个区间,包含2个数字,占比20%3~7为一个区间,包含5个数字,占比50%;8及以上为一个区间,包含3个数字,占比30%。


然后使用RANDBETWEEN函数生成3个随机值,区间范围分别为1-59/60-80/81-100,分别对应LOOKUP函数划分的3个区间。换而言之,也就是不及格对应占比20%,良好对应占比50%,优秀对应占比30%。

=RANDBETWEEN(    {1, 60, 81},    {59, 80, 100})

6)难度 


后来,总算学会了如何去爱,可惜你早已远去……咳,后来……教育局发现了某个学校的数据造假行为,于是打算从该校各个班级中随机抽取指定人数做实际测试。如上图所示,需要从A~C的名单中,随机抽取E1:F6区域所示各个班级的指定人数。

E9单元格输入以下动态数组公式:

=REDUCE(    E9:G9,    E2:E6,    LAMBDA(_d, _v,        LET(            _date, FILTER(A1:C500, A1:A500 = _v),            VSTACK(                _d,                TAKE(                    SORTBY(_date, RANDARRAY(ROWS(_date))),                    VLOOKUP(_v, E1:F6, 2, 0)                )            )        )    ))

公式使用REDUCE函数迭代每个班级,使用FILTER函数按班级筛选名单,使用SORTBY+RANDARRAY的套路打乱随机排序,再用TAKE函数截取指定数量的行数。


……

摊手,耸肩,有啥疑问照例可以在VIP会员微信群中提问交流。盖木欧瓦,下期再见

🚂>>~

加入我的付费会员,全面学习Excel

透视表 函数 图表 VBA PQ想学啥学啥

👀


本文由公众号“Excel星球”首发。
点击阅读原文系统学习Excel!

Excel星球
微软全球最有价值专家(Excel MVP),上千篇原创图文和视频教程随学随用,随用随查,建议常用Excel的职场人关注。
 最新文章