我编写了一个VBA代码,它迭代列和行并生成标准的正态分布:
Sub simulate_log_normal()
Dim i As Integer
Dim dblNorm_S_Dist As Double
ActiveSheet.Cells(34, 4).Select
For i = 34 To 64
For j = 4 To 23
Set current_cell = ActiveSheet.Cells(i, j).Select
Set dlbNorm_S_Dist = WorksheetFunction.Norm_S_Dist()
Set current_cell = dlmNorm_S_Dist
Next j
Next i
End Sub
因此它从单元格(34,4)开始,应为每列(第4列到第23列)生成标准正常值,然后为每一行(第34到64行)生成标准正常值。
当我在Excel上运行它时,它说:
Compile Error:
Argument not optional
我做错了什么?
答案 0 :(得分:2)
不确定你想要用Norm_S_Dist函数做什么,但是 尝试这样的事情:
Sub simulate_log_normal()
Dim i As Integer
Dim dblNorm_S_Dist As Double
For i = 34 To 64
For j = 4 To 23
Cells(i, j) = WorksheetFunction.Norm_S_Dist(1, True)
Next j
Next i
End Sub
答案 1 :(得分:0)
在使用Rnd之前,请不要忘记使用Randomize,否则,每次运行代码时,您都会一次又一次看到相同的数字。
更多信息:https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/rnd-function
他们说:“在调用Rnd之前,请使用不带任何参数的Randomize语句,以基于系统计时器的种子初始化随机数生成器。”