Bei dem Versuch, eine oder mehrere Formeln zu berechnen, waren in Excel keine Ressourcen mehr vorhanden

42568
Larry

Ich habe die Fehlermeldung "Excel ist beim Versuch, eine oder mehrere Formeln zu berechnen" aufgebraucht, auf EINEM meiner Computer (Out of 2) erhalten.

Mein Arbeitsblatt enthält: (In einem einzelnen Arbeitsblatt, nicht in einer Arbeitsmappe, gibt es Formeln in einem anderen Arbeitsblatt.)

  • 1.000.000 Formeln

  • Eine Pivot-Tabelle basiert auf 900.000 Datenzeilen

Wenn ich Excel / VBA für die Aktion "Blatt berechnen" (nur das aktuelle Arbeitsblatt) ausführen, wird das Programm die folgende Fehlermeldung anzeigen:

Excel ran out of resources while attempting to calculate one or more formulas 

auf keinem "ich" eine Pivot-Tabelle in (Excel oder VBA) oder "Calculate Sheet" in (Excel oder VBA) "aktualisieren"

Ich habe 2 Computer:

  • beide laufen 64 Bit Windows 7,

  • beide laufen mit Excel 2007 32Bit,

  • Ich führe Excel direkt nach dem Start von Windows aus.

  • mein Entwicklungs-PC mit 2 GB RAM kann problemlos laufen,

  • Ein anderer PC mit 6 GB RAM zeigte die ran out of resourcesFehlermeldung

  • Läuft auf demselben Datensatz, derselben Excel-Datei

Ich stelle auch fest, dass auf meinem Entwicklungs-PC ~ 1,2 G RAM verwendet wird, und auf dem nicht funktionierenden PC 900 M RAM, bevor auf die Aktion "Aktualisieren" / "Berechnen" geklickt wird.

BEARBEITEN

Der nicht funktionierende Computer kann Daten innerhalb von 100.000 Datenzeilen verarbeiten

Meine Fragen:

  1. Warum funktioniert es für den Computer mit weniger Arbeitsspeicher, aber nicht für den mit mehr Arbeitsspeicher? (Hauptfrage)
  2. Was kann ich tun, um den von Excel verwendeten Speicher zu reduzieren? (Unterfrage) (außer Löschen von Daten)

Jede Hilfe wird geschätzt, bitte weisen Sie mich in die richtige Richtung oder geben Sie einfach einen Hinweis.

BEARBEITEN : Ich denke daran, die Formeln zu entfernen und die Logik in vba zu verschieben, indem ich die Daten möglicherweise pro 10.000 Zeilen zwischenspeichert. Dies würde mein Problem jedoch nicht lösen, wenn die Pivot-Tabelle "Aktualisieren" denselben Fehler anzeigen würde.

4
2 Dinge aus meinem Kopf zu überprüfen. 1) Hat die 6-GB-Maschine andere Programme, die mehr Speicher verwenden? 2) sind beide Excel-Versionen genau gleich (gleiche Updates usw. angewendet) Pynner vor 11 Jahren 1
So viele Daten können von einer Datenbank in Bezug auf die Geschwindigkeit besser bereitgestellt werden (vorausgesetzt, die wertvollen Ausgabeinformationen befinden sich in der Pivot-Tabelle). Abhängig von der Komplexität der Formel erfordert dieser Ansatz jedoch einiges Durcheinander. Pynner vor 11 Jahren 0
Seltsam, dass der nicht funktionierende Computer * mehr * RAM hat. Können Sie überprüfen, ob auf dem Computer genügend Speicherplatz frei ist (sowohl physisch als auch Swap), der fehlerhaft ist? Ansonsten würde ich sagen, wenn möglich, das Blatt zu optimieren oder zu teilen. 1M-Formeln klingen für eine Excel-Tabelle etwas groß? lc. vor 11 Jahren 0
@lc. Auf diesem Computer sah ich im Task-Manager, dass der freie Speicher 2,2 G beträgt Larry vor 11 Jahren 0
Seltsam. Ist es genau dieselbe Datei mit genau denselben Daten? lc. vor 11 Jahren 0
@lc. Ja, gleiche Datenmenge, gleiche Datei. Larry vor 11 Jahren 0
Haben die 2 Maschinen die gleichen Berechnungsoptionen in Excel? Befinden sich die 900.000 Zeilen in der Arbeitsmappe oder in der externen Datenbank? Patrick Honorez vor 11 Jahren 0
@iDevlop Happy new year, I forget to mention, the error would also occur if I change the calculation option from MANUAL to AUTO. And the rows of data are in another worksheet in the workbook. Larry vor 11 Jahren 0
Beide laufen unter derselben Office-Version? 32 Bit oder 64? Patrick Honorez vor 11 Jahren 0
@iDevlop Excel 2007 hat nur eine Version, 32 Bit, Office unterstützt 64 Bit in der Version 2010 und ich denke, dass die Subversion von Betriebssystem und Excel identisch ist. Larry vor 11 Jahren 0
Seltsam. Sie können versuchen, einige Ressourcen zu speichern, indem Sie Array-Formeln anstelle von regulären Formeln verwenden, aber ich bezweifle, dass dadurch Ihr Problem gelöst wird. Sind die gespeicherten Dateigrößen auf beiden Maschinen ähnlich? Patrick Honorez vor 11 Jahren 0
Lasst uns [diese Diskussion im Chat fortsetzen] (http://chat.stackoverflow.com/rooms/22044/discussion-between-larry-and-idevlop) Larry vor 11 Jahren 0
Sorry, I can't chat. SO chat is blocked where I work at the moment :-/ Patrick Honorez vor 11 Jahren 0
@iDevlop Thanks for your input again, I will check that tomorrow. Currently I have no access to the non-working computer. The worse part of the problem is I cannot "refresh" the pivot table ( based on 900,000 rows of data * 9 Columns) I will first try removing as move formula as possible, saving them as value Then try the limit of pivot table range on the non-working pc the worst case solution I can think of is using a pivot table on the aggregate result of part of the original pivot table and the rest of the data Larry vor 11 Jahren 0
Warum verschieben Sie die Daten nicht in eine andere Arbeitsmappe oder sogar in eine Access-MDB? Mit Ihren Daten in Access werden Sie die meisten Beschränkungen für die Größe Ihrer Datenmenge aufheben. Patrick Honorez vor 11 Jahren 0
@iDevlop Die 900.000 Datenzeilen werden aus einer Oracle DB-Datenbank extrahiert, das Ergebnis wurde in einer Pivot-Tabelle dargestellt. Larry vor 11 Jahren 0
OK. Warum dann die Zeilen nach Excel verschieben? Sie können Ihr Pivot so einstellen, dass Oracle direkt abgefragt wird. Wenn es keine Zählerangabe gibt, würde ich es so spielen. Patrick Honorez vor 11 Jahren 3
Oder noch besser: Wenn Sie mindestens Oracle 11g ausführen, wird PIVOT-Abfragen von Haus aus unterstützt. Die Arbeit würde dann serverseitig und nicht lokal ausgeführt, und Ressourcenprobleme sollten vermieden werden. vor 11 Jahren 2
@Larry, ich bin ziemlich oft auf dasselbe Problem gestoßen und habe es in der Regel auf die 32-Bit-Version von Excel festgelegt. Warum funktioniert es auf einem Rechner über einem anderen ... Ich würde sagen, es ist genau so, wie das Betriebssystem / die Installation Ressourcen zugewiesen hat. Die einzigen zwei Lösungen, die ich dafür gefunden habe, sind: 1) Schreiben von .Net-Lösungen, die den größten Teil der Arbeit erledigen, dann ein Excel-Makro haben, das die .exe-Datei über 'shell' aufruft und dann die bereits berechneten Daten importieren / do minimale Aufräumarbeiten. 2) viel mit meinem Code herumzuspielen, um zu versuchen, es effizienter / weniger Speicher verbrauchen ... Viel Glück !!! vor 11 Jahren 1
iDevlop thanks for the suggestion once again. But I have to do some data massaging process in between ... @JohnBustos On the 1st point, one of my major problem is "refresh" pivot table would already cost the problem. Can .NET plot pivot table as well? On 2nd point, yeah I will try that .. Although I know if the data size increase more, then... nothing will works. Thanks a lot! I will update tomorrow, thanks again. Larry vor 11 Jahren 0
@ iDevlop danke für die Hilfe, Problem gelöst Larry vor 11 Jahren 0
@ Larry: gute Nachrichten. Fügen Sie eventuell eine Antwort auf Ihre eigene Frage hinzu, um uns wissen zu lassen! Patrick Honorez vor 11 Jahren 0

6 Antworten auf die Frage

3

Der Grund liegt wahrscheinlich in der 32-Bit-Speicherfragmentierung der 2 PCs (es ist oft schwierig, alle theoretisch verfügbaren 2 GB zu verwenden).
Sie können den von der Pivot-Tabelle verwendeten Speicher reduzieren, indem Sie die Anzahl der Spalten und / oder den für einige Spalten erforderlichen Speicher reduzieren (Textzeichenfolgen sind ein guter Kandidat).
(Mit VBA PivotCache.memoryUsed können Sie den vom Pivot-Cache belegten Speicherplatz messen.)
Ich gehe davon aus, dass Sie den Pivot-Cache erstellen, indem Sie die Daten aus der Abfrage direkt in den Pivot-Cache lesen, anstatt die Abfragedaten in ein Arbeitsblatt und in ein Basing zu legen Dies ist der Drehpunkt auf dem Arbeitsblatt, der viel mehr Speicher benötigt.
Sie sagen nicht, was die Formeln> 1000000 sind, daher habe ich keine Verbesserungsvorschläge.
Wenn Sie große Datenmengen in Excel-Pivots usw. verwenden möchten, erhalten Sie bessere Ergebnisse mit der 64-Bit-Version von Excel 2010, die nicht über die 2-GB-Grenze verfügt

Vielen Dank für den Vorschlag, ich versuche gerade Sachen, habe einen guten Link gefunden http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel .htm Larry vor 11 Jahren 0
Im Formularteil verwende ich keine eingebauten oder benutzerdefinierten flüchtigen Funktionen. Ich denke jedoch daran, Selection.Calculate zu verwenden und nur einige Zeilen gleichzeitig auszuwählen. Larry vor 11 Jahren 0
2
Larry

thanks for all the suggestion, readings and help. I have solved the problem by

  1. Change all formulas into values step by step per ~ 100,000 rows --- This reduce the memory held by excel by 10%
  2. Removed any unnecessary data/Worksheet(s) in the workbook (The raw data before data massaging ) --- This reduce the memory held by excel by 40%

And the reading http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htm suggest why 6G RAM PC is facing this issue rather than 2G RAM PC. I think it's because the 6G PC has a lot of excel add-in on it consuming RAM as well.

Thanks for the helps.

1
mikus

alte Aufgabe, aber immer noch für alle Versionen gültig, stieß ich auf ähnliche Probleme, wenn die verwendeten Formeln zu groß waren, obwohl die meisten Felder leer waren. Beispiel: DO_CALCULATION (D1: D100000) benötigt viel Zeit und Speicher wenn nur die Zellen D1: D10 einen Wert haben. Seien Sie also vorsichtig, wenn Sie versuchen, Formeln für die Datenerweiterung vorzubereiten. Halten Sie die Bereiche klein :)

1
Byrna5

Es sieht so aus, als würden Sie sehr große Excel-Tabellen erstellen. 32-Bit-Anwendungen können nur bis zu 2 GB RAM verwenden, es sei denn, sie können mit einem speziellen "Switch" für bis zu 3,2 GB konfiguriert werden. Excel 32-Bit ist also nach 2 GB tatsächlich kein Speicher mehr verfügbar.

Es ist also egal, ob Sie sogar 16 oder 32 GB RAM haben. Sie benötigen 64-Bit-MS-Office, damit Sie RAM mit mehr als 2 GB nutzen können. Nur dann wird Ihr zusätzlicher Arbeitsspeicher von 6 GB für Excel tatsächlich nützlich sein. Andernfalls müssen Sie herausfinden, wie Sie mit nur 2 GB RAM arbeiten, und höchstwahrscheinlich wird die Auslagerungsdatei auf der Festplatte verwendet.

Eine Möglichkeit wäre, die Größe der Windows-Seitendatei zu erhöhen. Ich lasse niemals zu, dass Windows die Auslagerungsdatei verwaltet. Ich habe es auf 1,5-fachen physischen Arbeitsspeicher eingestellt und die minimale und maximale Auslagerungsdateigröße eingestellt. Dies verhindert die Fragmentierung des RAM. Wenn Sie also über 4 GB RAM verfügen, setzen Sie diesen Wert auf 6144/6144 MB / min.

1
Nathan Gould

Die Antwort ist ein Upgrade auf eine 64-Bit-Version von Excel. Es kann einen viel größeren Speicherbereich ansprechen und ist im Allgemeinen auch viel schneller und das richtige Werkzeug für den Job, wenn Sie eine große Kalkulationstabelle haben.

0
user165568

Ein möglicher Grund, warum auf einem 6-GB-Computer und nicht auf einem 2-GB-Computer die Ressourcen ausgehen können, ist, dass Windows selbst mehr Ressourcen für die Verwaltung von 6 GB Arbeitsspeicher als für die Verwaltung von 2 GB Arbeitsspeicher benötigt.

Es war ein bekanntes Problem in 32-Bit-Windows (und ein noch größeres Problem in 16-Bit-Windows). Es soll auf 64-Bit-Systemen gelöst werden, aber ...

In jedem Fall ist es möglich zu testen: Deaktivieren Sie den zusätzlichen RAM und sehen Sie, ob das Problem behoben ist.