我想请求一个excel的代码。
我想请求一个excel的代码。总数是571.62,随机分成60个数字,最小值9.45,最大值9.55数字可以重复,保留小数点后两位。
Sub sz()
Dim arr(1 To 60), i%, n!, y%, x!, k%
Const c As Single = 571.62
For i = 1 To 60
arr(i) = Round(0.1 * Rnd + 9.45, 2)
n = n + arr(i)
Next i
If c > n Then x = 0.01 Else x = -0.01
y = Abs(Round(c - n, 2)) * 100
If y <> 0 Then
Do While k < y
For i = 1 To 60
If arr(i) >= 9.45 And arr(i) <= 9.55 And _
arr(i) + x >= 9.45 And arr(i) + x <= 9.55 Then
arr(i) = Round(arr(i) + x, 2)
k = k + 1
If k = y Then Exit Do
End If
Next i
Loop
End If
Range("A1:A60") = Application.Transpose(arr)
End Sub
需做一些变换:
1、A列公式*60行
=RANDBETWEEN(945,955)
2、为了避免计算过程中数字变换,选择整列,拷贝粘贴(原地粘贴为“值”)。
3、B列第一行键入公式,后续拷贝(为计算剩余项平均值)
=(57162-SUM(A$1:A1))/(60-ROW())
4、C列取值结果,
第一行
=A1
2行(-59行拷贝):
=IF(B1<=945,945,IF(B1>=955,955,A2))
第60行
=57162-SUM(C1:C59)