WPS表格中,100元5个人分,每人分的金额控制在10-30元之间(不能有小数),给个公式!

如题所述

你是要得到随机分配,但随机数函数是易失性函数,得到的数字会随着工作表中的操作(如打开文件、输入数据等)发生变化,要使得到的随机数固定,就要用Excel的循环引用。所以首先在选项的公式选项卡中,勾选“启用迭代计算”后确定。

然后,如图,选择B2:B6,输入公式:

=IF(SUM(B$2:B$6)<>100,RANDBETWEEN(10,30),B2)

同时按Ctrl+Enter两键一次完成5个单元格的公式输入。B7中有合计。现在因为用循环引用(直接引用单元格本身),因为IF的条件不成立,所以每个单元格取自身的数据,也就是不会再发生变化。

追问

我怎么得出的是0呢

追答

你是一次选择5个单元格后输入公式的吗?有没有按我说的先启用迭代计算?
也可以把公式修改下, 加上一个当前单元格为0的条件:
=IF(OR(B2=0,SUM(B$2:B$6)100),RANDBETWEEN(10,30),B2)
甚至还可再加为空的条件:
=IF(OR(B2="",B2=0,SUM(B$2:B$6)100),RANDBETWEEN(10,30),B2)

追问

刚才没启用迭代计算,如图;11人分238个出勤,出勤天数最多22,最后合计天数怎么不是238?

追答

哈哈,不是按实际的天数吗?还给人随机分,涨姿势了。
得给你说下随机数的特点了。随机函数(rand或randbetween)产生的随机数,最后的平均数总是在随机数函数中上限与下限的平均值附近的,也就是一个均布函数。数据个数越多,越接近均数。
现在你238个工日11人分,每人平均超过21.6个工日。而你随机分配时,下限为10,上限为22,平均值就是16,不仅与21.6相差大,且上限仅比平均值大零点几。这样当然很难得到结果的。适当调整下再计算吧。
开句玩笑,乘下的自己拿得了,也分一点给提供计算方法的,哈哈。

追问

应付检查,你懂的

追答

经测试,一直按F9,也无法达到随机数据固定(满足11个数字的和为238的条件)。原因就是前面说的。下限最小必须18才能得到结果实际结果,最小值为20。
不防再分析下,11人,10人22天,剩下1人也有18天。所以下限不可能是10,最小也得18

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-03

度友,看看这个方法!

具体公式为:

=ROUND(100*(B2/SUM($B$2:$B$6)),0)

辅助列公式为:=RANDBETWEEN(20,30),

如有疑问可以继续交流!!!

第2个回答  2019-12-03

@退休画线工 

每次输入才生成新数据

第3个回答  2019-12-03
A1中输入

=10+ROUND(RAND()*20,)
下拉到A4,A5中输入
=100-SUM(A1:A4)
多按几下F9,看着A5的数据如果可以,就认为是分好了吧。复制,到别处,选择性粘贴,勾选“数值”,固定下来,就行了。
第4个回答  2019-12-03
用这个函数即可,复制粘贴
=RANDBETWEEN(10,30)追问

你这是随机生成10-30的数字,(100元5个人分)

相似回答