
前言
有网友提出如何使Excel随机数相加等于整数,在某些特定环境会用到这种方式
使用函数
rand()和randbetween()这两个函数
rand函数,在空白单元格输入rand,点击fx

这个函数没有参数,返回的是大于等于0小于1的随机数
另一个函数是randbtween(),在空白的地方输入函数点击fx

看到两个参数一个是最小值一个是最大值,将返回这个区间内的随机整数
案例演示
首先进一步明确需求环境:
从0-100之间选取随机10个数字,保证这10个数字的和为100
下面正式看如何具体解决
第一步分析需求,寻找思路
可以使用rand函数选取一个随机数作为第一个数,
为了保证总数不能超过100,第二个数只能从0到(100减第一个数)之间选取
同理第三个数、第四个数……
第二步具体执行
因为rand函数只能取到0-1之间的随机数,
但是和我们的目标0-100有差异,这里可以使用rand乘以100
在第一个单元格内输入RAND()*100,代表从0-100随机选数

第二个单元格内输入RAND()*(100-SUM($B$3:B3)),保证每一次的随机数加总
不能超越100

注意sum函数的绝对引用
依次填充,最后一个单元格输入100-SUM(B3:B11)

在这里大家看到的上图一系列数据前大后小,为了均匀数据,可以人工干预

请看这个函数:ROUNDUP(RAND()*2*(100-SUM($C$2:C2))/(12-ROW(C2)),1)
比之前写的函数多了一个乘2,和(12-ROW(C2)),1),分解一下
第一个单元格中是RAND()*2*(100-SUM($C$2:C2))/10也就是说稀释了10倍
在倒数第二个单元格内的函数分解为
RAND()*2*(100-SUM($C$2:C10))/2,直接约掉了分子分母的2,从上到下分母越来越小。整体的数越大,人工干预随机数看起来均匀。
扩展需求补充:
如果需要返回的随机数是整数,可以采用两种方法
1、直接使用randbetween函数
2、通过使用round函数对rand函数的随机值进行四舍五入或者ROUNDUP向上整或者ROUNDDOWN函数向下取整