我正在使用一个模型,该模型利用Excel中的数据表功能来处理许多场景并收集输出。但是,我偶尔会发现数据表将重复顺序场景的结果,这是不可能的。
使用以下VBA代码生成数据表:
Sheets("ProjSheet").Range(Range("DTAnchor").Offset(-1, -1),Range("DTAnchor").Offset(NumScns - 1, 1))
.Table ColumnInput:=Range("CurrScen")
计算模式在整个代码中都是半自动的,数据表使用Calculate
进行更新。
错误的输出可能如下所示:
Scn | Result
------------
1 | 341.5
2 | 0
3 | 861.4
4 | 861.4 <- Wrong!
5 | 861.4 <- Wrong!
6 | 10.5
7 | 64.9
...
工作簿大小不超过22MB,数据表通常需要一分钟左右来完成1000个场景的流失。
我可以通过单独运行来验证任何特定方案的结果,因此我们知道这种情况下的结果不应该相同。
这些模型通常使用不同的模型设置保存,并在不同的Excel实例中同时运行。它们通常也可以在多个用户可以登录的远程计算机上运行,启动某些模型,然后断开连接并让它们在后台运行。这些计算机有8个内核,因此它们可以同时运行多达8个型号。有时,模型在不同的Excel实例中打开并启动,使用宏写入VB脚本,然后由.bat文件启动。
我很难可靠地复制错误。我的一个理论是,当运行的Excel模型多于远程计算机中的核心时,Excel会在数据表过程中冻结,并且无法在某些情况下完成其计算,因此它会吐出与当前相同的结果存储。但是,我对Excel的内部工作知之甚少,无法确定这是否合理。
有没有其他人遇到过重复结果的数据表?如果您对数据表的机制有更多了解,您是否知道可能导致此错误的原因以及将来如何防止此错误?
如果您需要有关错误的更多信息或我尝试确定原因的事情,请与我们联系。谢谢!