试图计算一个或多个公式时,Excel耗尽资源

我有一个工作簿来做我的开支的“智能”图表。 它已经运行了一年,现在有很多图表和费用。 当我更改任何内容或打开工作簿时,Excel现在会引发资源外错误。 事情是,我有很多资源,而且几乎没有使用任何资源。

Win8 64bit w/ 8 core CPU and 32GB of ram Office 2013 64bit 

我有两张纸,第一张纸称为费用有3列[date,描述,金额]和大约1500行的数据。 第二张纸上有大量相同的公式(500左右),并且旨在做“在dateX和Y之间描述匹配的所有费用 – 一些针 – ”。 我拥有的公式是这样的:

 = ABS( SUMPRODUCT( --(Expenses!A:A >= DATE(2011,12,1)), --(Expenses!A:A < DATE(2012,1,1)), --(ISNUMBER(FIND(C50,Expenses!B:B))), Expenses!C:C ) ) 

我可以给Excel更多的资源吗? (我很高兴能够使用我的所有内存,并突破我的CPU几分钟)。

有没有更有效的方法可以做这个公式?

我知道这个公式正在创build一个大网格,并用它来掩饰我的费用列表,并且对于每个公式,这个网格必须被创build。 我应该创build一个macros来更有效地做到这一点吗? 如果我有一个macros,我想从某个单元格中调用它

 =sumExpenses(<startDate>, <endDate>, <needle>) 

那可能吗?

谢谢。

我创build了一个函数,希望能够复制你目前的方程在VBA中所做的一些差异。 由于我不知道你的第二张表的细节,caching可能根本没有帮助。

如果你的第二张表使用相同的date范围为所有的sumExpenses调用,那么它应该是更快一点,因为它预先总结了第一遍的一切,如果你的date范围改变,那么它只是做了很多工作,什么都没有。

 Public Cache As Object Public CacheKey As String Public Function sumExpenses(ByVal dS As Date, ByVal dE As Date, ByVal sN As String) As Variant Dim Key As String Key = Day(dS) & "-" & Month(dS) & "-" & Year(dS) & "_" & Day(dE) & "-" & Month(dE) & "-" & Year(dE) If CacheKey = Key Then If Not Cache Is Nothing Then If Cache.Exists(sN) Then sumExpenses = Cache(sN) Exit Function End If Set Cache = Nothing End If End If CacheKey = Key Set Cache = CreateObject("Scripting.Dictionary") Dim Expenses As Worksheet Dim Row As Integer Dim Item As String Set Expenses = ThisWorkbook.Worksheets("Expenses") Row = 1 While (Not Expenses.Cells(Row, 1) = "") If Expenses.Cells(Row, 1).Value > dS And Expenses.Cells(Row, 1).Value < dE Then Item = Expenses.Cells(Row, 2).Value If Cache.Exists(Item) Then Cache(Item) = Cache(Item) + Expenses.Cells(Row, 3).Value Else Cache.Add Item, Expenses.Cells(Row, 3).Value End If End If Row = Row + 1 Wend If Cache.Exists(sN) Then sumExpenses = Cache(sN) Else sumExpenses = CVErr(xlErrNA) End If End Function Public Sub resetCache() Set Cache = Nothing CacheKey = "" End Sub 

我有一个类似的问题,其中有几个数组公式,约150行,我得到了这个错误,这真是令我困惑,因为真的没有那么多公式来计算。 我联系了我们的IT人员,他解释了以下,其中一些我了解,其中大部分我不知道:

通常,当计算机试图处理大量数据时,它使用multithreading计算,它使用计算机欺骗自己的所有8个处理器。 当closuresmultithreading计算时,计算机不会抛出“Excel耗尽资源…”错误。

要closuresmultithreading计算,请进入Excel工作簿中的“文件”选项卡,然后select“选项”。 在出现的框的右侧select“高级”并向下滚动到标题“公式”。 在该标题下是一个checkbox,显示“启用multithreading计算”。 取消选中,然后select“确定”并重新计算您的公式。

这可能有很多原因。 我只是希望Excel能告诉我们这个“通常的嫌疑犯”中有哪一个(或者更多)是犯了RAM这个罪名的。

也寻找

  1. 循环引用

  2. 分段条件格式(由剪切,粘贴,sorting,删除和添加单元格或行引起的。

  3. 错误导致#N / A,#REF,#DIV / 0! 等等,

  4. 过度使用TODAY(),NOW()等易失性函数

  5. 太多使用不同的格式

… 以该顺序

当你在那里,检查

  1. 断开的链接。 依赖外部数据新值的公式可能会返回错误。

  2. 任何包含#REF!的公式 如果你的公式是混乱的,这些也可能存在。 他们不会导致错误标志,但可能会导致一些未报告的错误。 如果你的公式满足前面的条件,公式的部分包含#REF! 将不会被评估,直到其他条件为准。