2012-02-08 161 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