3

众所周知,VBA 只能同时在一个处理器上工作,所以当我运行一个宏时,Excel 只使用 50% 的 CPU 而不是全部(双核)。

是否有使 VBA 使用两个处理器的解决方法?

谢谢。

4

3 回答 3

6

答案是否定的,除非您将工作负载拆分到多个 Excel 实例并在最后重新组合结果。

但是绝大多数 VBA 执行速度慢的情况可以提高几个数量级:

  • 关闭屏幕更新
  • 将计算设置为手动
  • 使用大范围和变体数组而不是逐个单元格读取和写入 excel 数据
  • 仔细查看 VBA UDF 中的编码并绕过 VBE 刷新错误
  • 最小化对 Excel 对象模型的调用次数
于 2013-05-16T11:02:12.477 回答
5

您可以将问题拆分到 Excel.Applications 的多个实例中,这样您就可以在一份 Excel 副本中做一半,在另一个副本中做一半。

我见过有人在 Excel VBA 中使用 8 个内核进行模拟工作。最后把结果重新组合起来有点痛苦,但它奏效了。

于 2013-05-16T08:31:02.780 回答
0

在 Excel 2010 中,转到文件 --> 选项 --> 高级。向下滚动直到您看到公式部分,您可以设置计算公式时要使用的处理器数量。这可能对 VBA 没有影响,但它适用于在整个列中运行公式。在处理大型工作簿时,它可以节省大量时间。此外,您可以转到任务管理器并右键单击 excel 并将优先级设置为高,以便您的机器将精力集中在那里。

** 此选项似乎不适用于 Mac **

于 2015-01-27T15:26:41.483 回答