excel如何随机生成几个数,且这几个数的和等于指定的一个数

请问用VBA在excel当中的几个单元格中生成几个随机数,这几个随机数的和要等于指定的一个数。(比如:一个数是100,随机生成5个数,这5个数的合计结果等于100)。谢谢... 请问用VBA在excel当中的几个单元格中生成几个随机数,这几个随机数的和要等于指定的一个数。(比如:一个数是100,随机生成5个数,这5个数的合计结果等于100)。
谢谢xibei168兄的不吝赐教,您写的程序实在好用,但我只会用执行宏来生成随机数,请问能用你写的函数shuji来生成随机数吗?(在函数中指定数值范围宽度,指定和值,随机数的数量,由函数来直接生成随机数,而不用去编辑宏,或是用函数的参数来设定数值范围宽度,指定和值,随机数的数量,由宏来生成随机数。)。再次感谢您的回答,谢谢!!! 感谢xibei168大力帮助,终于完成了这个程序。程序做得很好,人比程序更好!
展开
 我来答
百度网友b15888d
高粉答主

2019-06-08 · 关注我不会让你失望
知道小有建树答主
回答量:3479
采纳率:100%
帮助的人:124万
展开全部

在EXCEL中利用ROUNDUP函数可以随机生成几个数,且这几个数的和等于指定的一个数。演示软件版本excel2007,演示为随机生成5个数,和为100。具体操作请参照以下步骤。

1、在C5单元格内输入公式“=ROUNDUP(RAND()*2*(100-SUM($E$1:E1))/(11-ROW(E1)),1)”生成第一个随机数。最后一个数字“1”代表为有效数字位,可以根据个人需要需要修改。

2、然后按下回车键,表格中就会出现第一个随机数。

3、点击C5右下角的黑点,鼠标变成十字形,拖往C8单元格,这样就填充了C5到C8单元格,这里就生成了4个随机数。

4、然后在C9表格中输入命令【=100-SUM(C5:C8)】,生成最后一个随机数。

5、完成以上设置后,即可在exce中随机生成几个数,且这几个数的和等于指定的一个数。

mzw_ok
2015-09-28 · 知道合伙人数码行家
mzw_ok
知道合伙人数码行家
采纳数:13308 获赞数:33043
本人在陕西金山建设工程有限公司,对数码比较喜欢,希望在这方面有所作为!

向TA提问 私信TA
展开全部

1.首先介绍一下如何用RAND()函数来生成随机数(同时返回多个值时是不重复的)。

如下图所示,在单元格中输入=RAND(),回车后单元格即返回了一个随机数字。

2.RAND()函数返回的随机数字的范围是大于0小于1。因此,也可以用它做基础来生成给定范围内的随机数字。

3.生成制定范围的随机数方法是这样的,假设给定数字范围最小是A,最大是B,公式是:

=A+RAND()*(B-A)。

举例来说,要生成大于60小于100的随机数字,因为(100-60)*RAND()返回结果是0到40之间,加上范围的下限60就返回了60到100之间的数字。


4.上面RAND()函数返回的0到1之间的随机小数,如果要生成随机整数的话就需要用RANDBETWEEN()函数了,如下图该函数生成大于等于1小于等于100的随机整数。

这个函数的语法是这样的:=RANDBETWEEN(范围下限整数,范围上限整数),结果返回包含上下限在内的整数。注意:上限和下限也可以不是整数,并且可以是负数。


5.RAND()和RANDBETWEEN()是生成随机数的基础函数,也可以灵活变通。比如说要生成0.01至1之间包含两位小数的随机数,则可用下图的公式实现:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绿衣人敲门
2015-10-19 · 知道合伙人软件行家
绿衣人敲门
知道合伙人软件行家
采纳数:18765 获赞数:63774
毕业于西北大学计算机网络技术专业,现在在西安电力学院进行网络推广维护工作!

向TA提问 私信TA
展开全部
  1. 首先计算这个范围的差值。这里假设范围值为50~100之内的随机数

  2. 打开电子表格,在所需要产随机数的单元格内输入如下公式:=rand()*(100-50)+50。

  3. 按确认键就可以生成在规定范围内的随机数了。

  4. 如果需要生成多个随机数,那拖动单元格最下角小三角就可以啦。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xibei168
2010-06-22 · 超过16用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:0
展开全部
请试用以下代码,m1的值用于设置数值范围宽度,SUM1用于设置指定和值,SHU用于设置随机数的数量;将代码直接粘贴到VBA中即可运行。如有问题请反馈!
Sub 宏1()
Dim SUM1, M1 As Double
Dim SHU As Integer
SUM1 = 100 '设置和值
M1 = 8 '设置数据宽度(最大-最小)
SHU = 10 '设置数据个数
k = suiji(SUM1, M1, SHU)
End Sub

Function suiji(SUM1, M1 As Double, SHU As Integer)
Dim r(), i, k, s, m2 As Double
ReDim Preserve r(SHU)
If M1 <= 0 Then End '判定m1值是否合理
m2 = (SUM1 - M1 / 2 * SHU) / SHU
For i = 1 To SHU - 1 '设置循环次数,用于取4个随机数
r(i) = m2 + M1 * Rnd() '设置一个随机数值,范围0-100
For k = 1 To i '用于测试是否有重复数值,如没有必要可以去掉中间的if语句
s = s + r(k)
If r(i) = r(k) And i <> k Then
i = i - 1
Exit For
End If
Next k

If s > SUM1 Then '判定是否超出指定和值
i = i - 1
GoTo dd
End If
If i > 1 Then '用于测试前I个数值的和是否超标,如果超出就重新给最后一个数赋随机值
KK = (m2 + M1) * (SHU - i)
KF = m2 * (SHU - i)
TT = SUM1 - s
If TT >= KK Or TT <= KF Then
i = i - 1
GoTo dd
End If
End If

If i = SHU - 1 Then '给最后一个数赋值,并查看是否与前面数值重复,如可以重复就去掉这个IF和ENDIF
r(SHU) = SUM1 - s
For k = 1 To SHU - 1
If r(SHU) < m2 Or r(SHU) = r(k) Then '如果有与前值有重复的就重新给第SHU-1数赋值
i = i - 1
GoTo dd
End If
Next k
End If

dd: s = 0
If i >= 1 Then Cells(i, 1) = r(i) '如果I值有效给单元格进行赋值
Next i
Cells(SHU, 1) = r(SHU)
End Function
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水温零下三度
2010-06-21 · TA获得超过353个赞
知道小有建树答主
回答量:488
采纳率:0%
帮助的人:273万
展开全部

LZ 我利用Rand()公式来实现。公式及显示结果如下图。

公式基于随机数生成函数Rand(),在0到1之间生成一个数字,floor()向下取整函数保证不会一次取满100的值。

公式缺陷:

第一:会出现相同数字情况。

第二:有0值出现

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式