2012-02-08 79 views
0

我使用Excel 2007和Win7 32位。我已经下载了Process Explorer以获取有关正在运行的进程的更多信息。Excel虚拟内存问题

如果我在A1 = sum(if(B:J = 0,1,0))中输入公式,那么ctl-shift-enter(对于一个数组)就可以工作,但虚拟内存会一直发送800+ MB。如果我尝试将同一个公式放入A2中,则会出现“资源不足”错误。当我发现错误时,我发现虚拟内存达到了大约1.2GIG。我猜它已经超过了2 GIG(因为这似乎是Excel 2007的限制),但Process Explorer并没有显示出足够快的速度。

如果我删除公式,虚拟内存仍然保持在800+ MB左右。我似乎无法减少使用的虚拟内存。如果再次尝试将这个公式放在“我没有资源”的位置,现在我甚至不能把这些公式中的一个放在我以前的位置。这就像它没有释放所用的虚拟内存。

我知道Win 7 64位和Excel 2010 64位具有8 TB的虚拟内存,但是如果虚拟内存没有被取消分配,这看起来像是内存泄漏。

该公式只是一个测试,以获得这样的想法,即工作簿中的许多数组公式都受此影响。

任何想法,除了升级,我可以在这种情况下做什么?

+0

导致虚拟内存的阵列仍将位于撤消堆栈中。我怀疑这就是为什么内存不能清理。 – Jesse 2012-02-08 18:09:36

+0

我建议你停止在数组公式中使用整列引用(如果(B:J = 0,1,0)创建超过900万个需要被引用的单元并与包含零的900万个虚拟单元进行比较以创建9个虚拟百万单元包含0或1,所以我很惊讶,内存只能达到800 MB) – 2012-02-08 23:38:51

回答

1

如果您制作新的工作簿并在工作表上使用这些列公式,那么内存峰值?如果列中的任何/所有单元格都被“触摸”,则Excel会将它们视为空白单元格并在公式中使用它们。如果他们从未被触摸过,那么他们就不存在,Excel不应该尝试将它们加载到内存中。

如果您的工作簿只是庞大的,您可能会卡住,尽管可能重构您的公式以处理单元格的较小部分,然后将这些结果运行到另一组公式以获得最终结果。

+0

这是一个新的工作簿,并且内存不会超过800 MB。当我第一次打开新书时,它大约从100左右开始。 – user441521 2012-02-08 17:30:34

+0

只是一个说明,我只是在Windows 7上用x64机器上的Excel 2007试过它,没有内存尖峰。 – 2012-02-08 18:09:44