设想: 1、在A列的空格填上最大值为2.0最小值为-1.5之间的随机数后求和X 2、用要求等于的值减去获得的和X后除以空格数得到一个值Y 3、A列两个相邻之间的随机数加Y值,并放在B列对应的单元格并求得和Z 4、用要求等于的值减去Z,并放在要求等于的值对应B列的单元格 5、查询B列数值的绝对值,若有数值大于2.0,则重新第一步开始。直至B列数值的绝对值没有大于2.0结束.
- Sub tt()
- arr = Range("a1:a" & [a65536].End(3).Row)
- r1 = 1
- For i = 2 To UBound(arr)
- If Len(arr(i, 1)) > 0 Then
- xsum = arr(i, 1)
- r2 = i
- 100: s = 0
- For ii = r1 To r2 - 1
- x = Rnd * 3.5 - 1.5
- arr(ii, 1) = x
- s = s + x
- Next
- p = xsum - s: arr(ii, 1) = p
- If p > 2 Or p < -1.5 Then GoTo 100
- r1 = r2 + 1
- End If
- Next
- [b1].Resize(UBound(arr)) = arr
- End Sub
复制代码
|