在Excel中对随机生成的值求和

时间:2015-05-20 01:04:01

标签: excel vba excel-vba random

我正在尝试从短列表中随机选择值,求它们,然后多次迭代该过程。到目前为止,我认为我成功地产生了价值观:

Work so far

				0.4855981	0	0	FALSE
	Price			0.337666609	0	0	FALSE
1	$29.74 			0.808816075	0	0	FALSE
2	$0.85 			0.906751484	0	0	FALSE
3	$38.24 			0.10572928	1	4	17
4	$17 			0.957321497	0	0	FALSE
5	$25.50 			0.644195743	0	0	FALSE
6	$18.70 			0.133302328	0	0	FALSE
7	$29.75 			0.907771163	0	0	FALSE
8	$14.45 			0.156311546	0	0	FALSE
9	$30.60 			0.871958447	0	0	FALSE
10	$26.34 			0.0790938	1	14	24.65
11	$11.05 			0.696383544	0	0	FALSE
12	$124.95 		0.080728462	1	3	38.24
13	$9.35 			0.03717127	1	10	26.34
14	$24.65 			0.970430159	0	0	FALSE
15	$41.65 			0.814402286	0	0	FALSE
				0.462967917	0	0	FALSE
				0.646432058	0	0	FALSE
				0.49384003	0	0	FALSE
				0.381349746	0	0	FALSE
				0.129594937	0	0	FALSE
				0.576582174	0	0	FALSE
				0.37483142	0	0	FALSE
							
						Total	106.23

在任何一组中,有24次尝试从价目表中选择一个项目。我所做的是随机生成一个数字,如果它小于0.125(每次尝试从价格表中获得一个值的1/8),那么我生成1到15之间的随机数,然后vlookup得到价格。

但是我想多次迭代这个过程,所以说出每次包含24次尝试的100次,我返回的平均值是多少。每次更新随机数时,我都找不到简单地将数字添加到自身的方法,而且我的VBA非常有限 - 我正在考虑一个有点按钮来刷新数字的循环。伪代码因为我对VBA知之甚少:

for 1=1:100
  clickbutton() #to refresh
  grandtotal=grandtotal+total
end

averagevalue=grandtotal/i

我知道这看起来很容易,但我没有运气搜索如何刷新点击按钮,或者这是否是最好的方式。谢谢!

1 个答案:

答案 0 :(得分:0)

伪代码是一个很好的起点!如果您将工作表中的总单元格命名为“Total”,则应该可以运行以下内容,这是我对伪代码的看法:

noRuns = 100
grandTotal = 0
For i = 1 to noRuns
    ActiveSheet.Calculate
    grandTotal = grandTotal + Range("Total").Value
Next i
MsgBox "The average value is " & grandTotal / noRuns 

如果这不起作用,请玩它并让我知道你是如何上场的。