限制 Excel CPU 使用率

lea*_*IGo 32 windows-7 vba microsoft-excel-2007 worksheet-function

有没有办法限制excel在运行时可以访问的CPU使用量?我有一个 VBA 脚本来计算一堆巨大的数组公式。整个计算使用 100% 的 CPU 可能需要 20 分钟,但在此期间我无法使用我的机器,而宁愿让它在后台以大约 50% 的 CPU 使用率运行,这样我就可以继续做其他事情。有什么建议?

我的操作系统是 Windows 7 Enterprise 64 位,Excel 版本是 2007-32 位

mto*_*one 55

如果从多个公式调用 VBA 函数,或者如果您的脚本生成或强制重新计算多个公式,那么这绝对应该利用Excel的多线程计算功能。分别地,这将为每个公式运行多个 VBA 函数实例,或者在 vba 脚本在单个线程上运行时同时重新计算多个单元格。

您可以限制 Excel 用于重新计算 Excel 选项...高级选项卡...公式部分中的公式的线程数。

在此处输入图片说明


B54*_*enn 28

不要降低优先级,而是尝试在任务管理器中更改关联。如果您有 1 个以上的 CPU,您可以限制 Excel 将使用的 CPU 数量。这将释放其他 CPU 来处理其他事情。

右键单击“进程”选项卡中的 Excel,然后选择“设置关联”。选择您希望 Excel 运行的 CPU。

  • 请注意,对于亲和力,Windows 也将每个核心视为一个 CPU。(因此,如果您有双核或四核,这将起作用。) (3认同)
  • @MonkeyZeus 通常,进程退出时不会保存关联。它仅适用于当前运行的进程。可能是 HandBrake 本身产生了新的进程,或者你开始了新的进程。 (2认同)

Sli*_*ves 7

您可以尝试降低 excel 进程的优先级,方法是找到打开任务管理器,切换到“详细信息”或“进程”选项卡(取决于您的 Windows 版本),右键单击 excel.exe 进程,然后选择一个较低的优先级。这应该为其他进程提供更多的 CPU 时间。

  • @SlithyToves:那真的不重要。如果有多个候选程序,则优先级确定哪个程序获得 CPU。将 Excel 设置为非常低意味着它只在所有其他程序完成时获得 CPU 片。但是,当 Excel _does_ 获取 CPU 切片时,它不会放弃该切片。它只会失去下一个 CPU 时间片的竞争。 (3认同)