如何在Excel中把一个数 随机分成30份,要求数值>100并且<999。求公式,最好超详细。 excel中如何将单元中数值随机求和成某一个值,如20 60...

作者&投稿:僪婵 (若有异议请与网页底部的电邮联系)

1、选择A1:A30单元格,输入 =RAND()  按Ctrl+Enter组合键结束,生成一组随机数;

2、在D2单元格输入=SUM(B:B)

在D3单元格输入=COUNTIF(B:B,">100")

在D4单元格输入=COUNTIF(B:B,"<999")

3、选择B1:B30单元格,输入以下公式,按Ctrl+Enter组合键结束,然后按F9键,生成D2为16000,D3为30,D4为30时的随机数时,即可符合要求,可按F9键继续生成下一组随机数。

=ROUND(100+(D$1-30*100)*A1/SUM(A$1:A$30),1)



这个操作,,想做到真正的无条件随机,用函数太可能复杂了。既要保证每个数在范围内,还要保证总和是你特定单位一个数,所以需要30个数具有相互关系。
我只会用vba代码来做了。不知道你是否能接受。。

A1到A60输入=rand()
B1输入=a1/sum(A1:A60)*(16000-3000)+100
下拉到B60
B1到B60就是你要的总和16000的30个随机数结果了,保存一下就刷新一次

公式:

=RANDBETWEEN(100,999)



写代码可以实现

如何把一个数随机分成30份,要求数值>100并且<999。(代码和EXCEL都可以,越详细越好。)~

可以使用VBA来实现,按ALT+F11,粘贴下面的代码:
Option ExplicitSub x()'把16000随机拆分为30份存入A1:A30,要求都在100~999之间 Dim x, i, t, a, b x = 16000 For i = 1 To 29 '根据剩余的和x和个数30-i确定本次随机数的范围 a = Application.WorksheetFunction.Max(x - 999 * (30 - i), 100) b = Application.WorksheetFunction.Min(x - 100 * (30 - i), 999) t = Int(Rnd() * (b - a)) + a 'a~b之间的随机数 Cells(i, 1) = t x = x - t Next i Cells(i, 1) = xEnd Sub粘贴好之后代码窗口如下图:

运行之后的数据窗口如下图(A1:A30和为16000)


这个问题用规划求解来做最好。具体方法请参考本人百度空间要相关文章。
http://hi.baidu.com/qinqh_yl/item/cf81f8c0508ada46a8ba94c4