vba - WorksheetFunction.Norm_S_Inv() 的问题
问题描述
我正在尝试为 5000 次试验建立蒙特卡洛模型。我似乎有一个奇怪的问题
g = WorksheetFunction.Norm_S_Inv(Rnd())
在循环运行期间(5000 次试验),起初它正在工作,但随后出现错误消息:
Run-time error "1004":
Method 'Norm_S_Inv' of object 'WorksheetFunction' failed
我检查了许多 VBA 站点,但似乎没有找到解决方案。我也测试过
Application.WorksheetFunction.Norm_S_Inv(Rnd())
- 和
WorksheetFunction.Norm_S_Inv(Rnd())
- 和
WorksheetFunction.Norm.S.Inv
- 和
Application.WorksheetFunction.Norm.S.Inv(Rnd())
- 和
WorksheetFunction.NormSInv
先感谢您,
解决方案
当您Rnd()
返回0
or的值时会发生这种情况1
,这当然是函数的可接受值,Rnd()
但它不是作为Norm_S_Inv()
.
我可以在我的计算机上轻松重现(我的 Excel 是意大利语的,实际上我得到了1004
代码,但我这边的文本却说“找不到类 WorksheetFunction 的属性 Norm_S_Inv):
g = WorksheetFunction.Norm_S_Inv(0.14)
Debug.Print g
>>> -1.08031934081496
g = WorksheetFunction.Norm_S_Inv(0) 'or g = WorksheetFunction.Norm_S_Inv(1)
>>>
为了避免这种情况,请确保您没有获取0
或1
作为函数的输入:
myRand = Rnd()
Do Until (myRand <> 0 And myRand <> 1)
myRand = Rnd()
Loop
g = WorksheetFunction.Norm_S_Inv(myRand)
个人说明:这似乎是为此功能进行的非常糟糕的错误处理,错误消息根本不清楚,我理解您在找到根本原因时的挫败感。
推荐阅读
- vue.js - Ionic VueJs 电容插件原生音频
- java - 在 java 中使用相同的阅读器读取 CSV 和 XLSX 文件
- python - 蟒蛇使用'|' 在函数参数中
- string - 如何使用字符串在 struct 上实现 BorshDeserialize?
- java - 如何使用哈希图将字符设置为等于不同的字符?
- javascript - 如何解决 JS 计算器启动问题?
- laravel - Laravel 测试 - JetStream [SPA] - 无法注销用户
- javascript - 如何使用泛型传递任何类型?
- java - Hibernate:将数据列表传递给“SELECT IN()”子句会产生错误
- windows - 将虚拟 COM 端口识别为 FTDI 设备