我有一个2010年的Excel 64位模型,它有一个VBA子例程来运行16个输入组合,所有输入都使用相同的Excel模型计算得到处理,然后输出结果标签在模型中。我可以访问高性能集群(HPC),并希望运行VBA代码,以便可以并行运行16个组合,而不是HPC上的当前顺序过程。我应该如何处理这个问题?例如,我是否需要将每个组合放入一个单独的子例程中,并有一个主VBA子例程来调用每个组合?我需要包含的前端VBA代码和后端VBA代码才能在HPC上运行模型?修改迭代VBA例程以在高性能群集上运行
回答
Excel VBA does not directly allow多线程,所以很遗憾没有简单的VBA解决方案。
我可以在这里看到一些选项,它将取决于您的问题是否可以使用它们。
在Excel 2007和2010中,工作表函数可以并行执行。如果你的VBA代码是一个函数而不是一个子函数,并且你的大部分数据来自工作表,你可以尝试利用它。
你可以编写一个自己处理多线程的DLL,以及call it from Excel。为此,您必须将代码移植到VB 6或VB.NET(或直接用C/C++重写),然后手动处理多线程。
非常感谢您的帮助。我有两个这样的问题。对于其中的一个,从VBA调用的每个迭代中耗时的过程实际上都是运行SOLVER。这是最耗时的SOLVER部件,例如24小时为所有组合。 SOLVER能否在HPC上运行这个问题?如果可以的话,我仍然可以依次运行这些组合,但是每个迭代的持续时间都会缩短。 – BruceCH 2012-08-01 03:02:15
您是否看过Solver的商业版本:它可以快几个数量级? http://www.solver.com/exceluse.htm – 2012-08-01 08:07:19
是的,我试过使用Solver的商业版本,并且没有什么区别。 – BruceCH 2012-08-01 18:05:56
- 1. 在集群上运行Matlab代码
- 2. 在MPI群集上运行C程序
- 3. 在群集上运行openmp
- 4. 在迭代时修改集合
- 5. 防止两次运行子例程以提高性能?
- 6. 在运行时修改程序集?
- 7. vba - 迭代集合
- 8. 如何修改弹性搜索实例的群集名称?
- 9. 在群集中运行Solr - 仅限高可用性
- 10. 群集性能
- 11. java.lang.NoClassDefFoundError:上运行Hadoop集群
- 12. 如何在谓词上运行多线程集合迭代?
- 13. Mongrel群集在Windows上并行运行
- 14. 当前修改例外Android迭代器
- 15. 集群的代表性实例 - 分层集群
- 16. 集群索引列上的非集群索引可提高性能?
- 17. 在迭代过程中修改对象
- 18. 修复集群运动PySpark
- 19. Ehcache在大集群上的性能
- 20. 如何在集群上运行spark工作远程了解如何在集群上运行spark工作
- 21. 性能和LINQ以迭代
- 22. 在Hadoop(单节点群集)上运行排序示例?
- 23. 在单节点群集上运行Hadoop示例时出错
- 24. Hadoop在单节点集群上运行排序示例
- 25. Netty高可用性群集
- 26. 如何在PC群集上运行VMWare?
- 27. 在异构集群上运行Riak
- 28. 在群集上运行大量任务
- 29. 在异构集群上运行MongoDB
- 30. 无法在群集上运行MR
此链接可能有些用处[为Windows HPC群集构建VBA应用程序和工作簿](http://www.microsoft.com/en-us/download/details.aspx?id=2939) – 2012-08-01 03:23:56