模拟VBA中的标准正态分布

时间:2018-02-10 00:02:33

标签: vba excel-vba excel

我编写了一个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

我做错了什么?

2 个答案:

答案 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语句,以基于系统计时器的种子初始化随机数生成器。”