excel生成随机数据要大于30且小于300 数值要为正整数可余小数且和为固 ...
发布网友
发布时间:2024-09-28 23:06
我来回答
共4个回答
热心网友
时间:2024-10-08 10:35
主要修改:
1、需要增加“原始数据”与“份数”的符合性测试。如:原始数据为100,份数为5,则无法达到最小为30的要求。再如,原始数据为1000,份数为3,则无法达到最大为300的要求。对以上情况修改后的代码要求重置原始数据。
2、增加随机生成数据的符合性测试,达到必须大于30小于300的要求后。
代码如下:
Sub test()
Dim x, y As Double '原始数据
Dim n As Integer '定义要分的份数
Dim t As Integer '定义分出来数据精度
Dim num() As Variant '保存分出来的数据
Columns("D:D").Select
Selection.ClearContents '清除数据显示列原来的内容
10:
x = Cells(1, 2) '获取表格里的定义的原始数据
n = Cells(2, 2) '获取表格里定义份数
t = Cells(3, 2) '获取表格里定义分出来数据精度
If x / n < 30 Or x / n > 300 Then
MsgBox "原始数据有误!请重新设定!"
GoTo 20
End If
y = x
ReDim num(n)
For i = 1 To n - 1 Step 1
Randomize '重置随机种子
num(i) = Round(30 + x / n * Rnd(), t) '生成一个随机数据
y = y - num(i)
Next
If y <= 300 Then
For i = 1 To n - 1 Step 1
Cells(i, 4) = num(i)
Next
Cells(n, 4) = y
Else
GoTo 10
End If
20:
End Sub
热心网友
时间:2024-10-08 10:35
路过,不会,先顶一下。只会用 =RANDBETWEEN(30,300)
热心网友
时间:2024-10-08 10:33
不会问问题,很难写好代码啊
是要生成多少个?
热心网友
时间:2024-10-08 10:33
有点明白了,或许你能不能把你遇到的问题描述下,为何要这么绕着去求这些数字?