Excel-Grenzen 2007 und neuere Versionen? Hier Tests!
03.02.2024 22:40:09
Frank Dreier
Excel 2007, 32 Bit, Standard-Prozessor, 16 GB Arbeitsspeicher.
da mir das keine Ruhe lässt und ich doch immer mal wieder an die Grenzen von Excel stoße, wollte ich fragen ob Ihr an einem kleinen Test mitmachen wollt und Eure Ergebnisse mitteilen möchtet, insb. von neueren Excel-Versionen und ob Microsoft seit 2007 überhaupt den Internen Speicher von Excel in neueren Versionen angehoben hat. Der ist u.a. auch entscheidend für die maximale, abspeicherbare Größe einer xlsb-Datei.
Excel besitzt wohl einen eigenen, internen Arbeitsspeicher der bis zu einem gewissen Limit (bei mir 1,2 GB) aufgebläht werden kann. Wird dieses überschritten, stürzt Excel ab / Fehlermeldung etc. Die Arbeitsspeicherbenutzung könnt Ihr im Taskmanager anschauen, bei mir unter "Prozesse" und da heißt mein Excel Excel.EXE*32. Dieser bläht sich bei der Berechung entsprechend auf bis zur Grenze von 1,2 GB, dann ist Schluss.
Hier der Code, der Excel in die Knie zwingt. Einfach in eine leere Arbeitsmappe kopieren und die eine Zeile Code ausführen. Weiter unten meine Ergebnisse mit unterschiedlichen Werten für Excel 2007, 32 Bit Version:
Sub rt()
Dim Start As Double: Start = Timer
Range("A1:EA500000") = Range("A1:EA500000").Value
MsgBox Format(Timer - Start, "#0.00") & " Sekunden gerödelt!"
End Sub
Hier die unterschiedlichen Ergebnisse:
Range("A1:AA500000") = Range("A1:AA500000").Value (Berechnungszeit: 18,70 Sek, Arbeitsspeicherbenutzung: 462.000 K (462MB)
Range("A1:BA500000") = Range("A1:BA500000").Value (Berechnungszeit: 35,88 Sek, Arbeitsspeicherbenutzung: 671.000 K (671MB)
Bei nachfolgendem Berechnen erhalte ich schon eine Warnung:
Range("A1:CA500000") = Range("A1:CA500000").Value (Berechnungszeit: 59.41 Sek, Arbeitsspeicherbenutzung: 979.000 K (979MB)
Range("A1:DA500000") = Range("A1:DA500000").Value (Berechnungszeit: 77.55 Sek, Arbeitsspeicherbenutzung: 1180.000 K (1.2GB)
Bei dieser Makro-Zeile erhalte ich: "Laufzeitfehler 7: Nicht genügend Speicher"
Range("A1:EA500000") = Range("A1:EA500000").Value (Berechnungszeit: - Sek, Arbeitsspeicherbenutzung: > (1.2GB)
Ist das bei Euch auch so?
Meine abgespeicherten Excel-Dateien im *xlsb - Format dürfen je nach Formelanteil maximal zwischen 80 MB und 120 MB groß sein bei 2007. Danach lassen sich die Dateien nicht mehr richtig öffnen nach dem abspeichern oder Excel hat Aussetzer (zu erkennen an unsauberer Darstellung einzelner Zellen, werden schwarz etc). Wie sind da Eure Grenzen?
Onur hatte wohl bei Range("A1:AA500000") = Range("A1:AA500000").Value nur 4,9 Sekunden Berechnungszeit, allerdings auch 64-BitVersion Excel und deutlich jünger als meine. Ich bin gespannt auf Eure Ergebnisse!