如何在VBA中平方根函数

时间:2018-11-05 13:11:24

标签: excel-formula sqrt

我正在研究MonteCarlo仿真模型,其中一部分是要计算以下公式:

  

X = Sqr(1-p)Y + Sqr(p)Z,

位置:

  1. Y和Z是根据标准正态(inv。)分布基于(分别是特质和系统因素)随机获得的值,计算公式为:

    Application.WorksheetFunction.NormInv (Rnd(), mean, sd)
    
  2. p表示一个相关因子。

我的目的是求出一个召回的公式的平方根,但是,当我尝试以下操作(插入第一个Sqr)时,它不起作用并给出错误:

Matrix (n, sims) = (R * Sqr(Application.WorksheetFunction.NormInv(Rnd(), mean, sd))) + (Sqr(1 - R) * RandomS(s, x))

其中:

R :相关系数

RandomS(s,x):生成的Z值矩阵。

我不想过多地介绍背景和其他变量,因为我遇到的唯一问题是平方根方程。

我收到的错误消息为:

  

运行时错误“ 5”:

     

无效的过程调用或参数

当我单击“调试”时,它将带我到公式,因此语法肯定有问题。

您可以直接对公式求平方吗?

谢谢!

安德鲁

1 个答案:

答案 0 :(得分:3)

平方根就是Sqr

它在Excel VBA中工作正常,例如:

MsgBox Sqr(144)

...返回12

请不要将其与工作表函数的语法为SQRT混淆。


如果您的公式仍然存在问题,则tit必须与平方根函数以外的其他函数一起使用,我建议您检查变量的值,并确保正确声明了它们的值(最好使用Option Explicit在模块顶部)。

还要确保您传递的是Sqr正值


文档:Sqr Function


我不是数学专业,但您的公式为:

  

X = Sqr(1-p)Y + Sqr(p)Z,

...您指定了YZ的计算方式,因此请分别进行计算以使其简单:

Dim X as Double, Y as Double, Z as Double
Y = Application.WorksheetFunction.NormInv (Rnd(), mean, sd)
Z = Application.WorksheetFunction.NormInv (Rnd(), mean, sd)

假设公式中不应该包含逗号,并且不知道p是什么,那么计算X的最终代码是:

  

X = Sqr(1-p) * Y + Sqr(p) * Z