Layer 8Ehrlicher Tech-Support

Excel-Mappe riesig und träge: der benutzte Bereich

200 Zeilen Daten, 40 Megabyte Datei, winzige Bildlaufleiste. Strg+Ende springt ins Nichts – Excel hält Tausende leerer Zellen für benutzt.

Aufwand:
ca. 25 Min.
Voraussetzung:
Microsoft Excel, unzip, Terminal oder Eingabeaufforderung
Gilt für:
Excel-Arbeitsmappen im Format xlsx

Das Symptom

In der Tabelle stehen zweihundert Zeilen. Die Datei ist trotzdem zweistellig megabytegroß, das Blatt scrollt zäh, jede Eingabe braucht einen Moment, und die Bildlaufleiste ist auf einen Strich zusammengeschrumpft. Strg+Ende springt nicht ans Ende der Daten, sondern irgendwohin in die Leere — Zeile 400000, Spalte CX.

Die „Layer 8“-Wahrheit

Excel merkt sich nicht, wo Daten stehen, sondern wo etwas benutzt wurde. Und benutzt ist eine Zelle nicht erst dann, wenn etwas drinsteht. Die Formatbeschreibung zählt ausdrücklich drei Dinge auf: Formeln, Textinhalt — und Zellformatierung. Eine völlig leere Zelle mit einer Rahmenlinie, einer Hintergrundfarbe oder einem gesetzten Zahlenformat ist für Excel eine benutzte Zelle und wird als solche in die Datei geschrieben. Zweihundert Zeilen Daten und dreihunderttausend Zeilen alter Formatierungsreste ergeben eine Datei, deren Größe nichts mehr mit ihrem Inhalt zu tun hat.

Der Layer-8-Anteil ist die Entf-Taste. Sie fühlt sich an wie Löschen, entfernt aber nur den Inhalt. Die Zelle bleibt, mitsamt ihrer Formatierung, und damit bleibt auch der benutzte Bereich. Wer „alles gelöscht“ hat und sich über die unveränderte Dateigröße wundert, hat nicht zu wenig gelöscht, sondern das Falsche. Wirksam sind zwei Dinge: ganze Zeilen und Spalten entfernen, oder Inhalte und Formate ausdrücklich zusammen löschen.

Und dann ist da noch die gut gemeinte Vorsorge, die das Problem erst erzeugt. Wer „sicherheitshalber“ A1 bis A200000 markiert und als Datum formatiert, erzeugt zweihunderttausend benutzte Zellen. Wer stattdessen die ganze Spalte markiert, erzeugt laut Spezifikation genau eine. Die sparsame Variante ist hier ausgerechnet die großzügige — ein seltener Fall, in dem der bequemere Weg auch der richtige ist.

Die echte, verifizierte Lösung

1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:

  1. 1.

    Den benutzten Bereich sichtbar machen

    Strg+Ende springt an die letzte Zelle, die Excel für benutzt hält. Landet der Cursor ein paar Zeilen unter den Daten, ist alles in Ordnung. Landet er in Zeile 300000 oder in Spalte BZ, obwohl die Tabelle bei Spalte G endet, ist die Ursache gefunden – und zwar für die Dateigröße, die Trägheit und die lächerlich kleine Bildlaufleiste gleichermaßen.

  2. 2.

    Nachlesen, was in der Datei steht

    Eine xlsx-Datei ist ein Zip-Archiv, und jedes Blatt schreibt seinen benutzten Bereich hinein. Der erste Befehl liest ihn im Klartext aus, der zweite zeigt, welches Blatt die Datei aufbläht. Das ist genauer als jedes Gefühl: Eine Ausgabe wie A1:XFD1048576 beantwortet die Frage abschließend, und die Blattgrößen sagen, wo aufgeräumt werden muss.

    unzip -p mappe.xlsx "xl/worksheets/sheet*.xml" | grep -o '<dimension ref="[^"]*"'
    unzip -l mappe.xlsx | grep -i "xl/worksheets"
    
  3. 3.

    Ganze Zeilen und Spalten entfernen, nicht Inhalte löschen

    Unterhalb der letzten echten Datenzeile die erste leere Zeile markieren, mit Strg+Umschalt+Pfeil nach unten bis zum Blattende erweitern und die Zeilen über das Kontextmenü LÖSCHEN – nicht mit der Entf-Taste leeren. Dasselbe rechts der letzten Spalte. Der Unterschied ist der ganze Punkt der Übung: Entfernen nimmt die Zellen aus der Datei, Leeren lässt sie samt Formatierung stehen.

  4. 4.

    Formate ausdrücklich mit entfernen

    Wo Zeilen erhalten bleiben sollen, aber Formatierungsreste stören, hilft der Befehl zum Löschen von Inhalten und Formaten gemeinsam (im Menüband unter Bearbeiten, Löschen, Alle löschen). Er beseitigt genau das, was die Entf-Taste stehen lässt. Bedingte Formatierungen und Gültigkeitsregeln, die über riesige Bereiche gelegt wurden, gehören dabei ebenfalls auf die Liste – sie werden in eigenen Regelverwaltungen aufgeräumt, nicht durch Zellenlöschen.

  5. 5.

    Speichern, schließen, neu öffnen – und erst dann urteilen

    Der benutzte Bereich wird beim Speichern neu geschrieben. Solange die Mappe geöffnet ist, zeigt Strg+Ende oft weiterhin die alte, zu große Ecke. Also: speichern, Excel schließen, Datei erneut öffnen, Strg+Ende drücken. Wer diesen Schritt überspringt, hält eine gelungene Reinigung für gescheitert und fängt von vorne an.

  6. 6.

    Das Ergebnis in der Datei gegenprüfen

    Zum Schluss noch einmal der Befehl aus Schritt 2. Steht dort jetzt ein Bereich in der Größenordnung der tatsächlichen Daten, ist die Sache erledigt – und die Dateigröße bestätigt es. Bleibt der Bereich groß, liegt es meist an einem weiteren Blatt, das bisher übersehen wurde, oder an Objekten wie eingefügten Bildern und Formen, die getrennt zu suchen sind.

    unzip -p mappe.xlsx "xl/worksheets/sheet*.xml" | grep -o '<dimension ref="[^"]*"'
    

Häufige Fragen (FAQ)

?In der Tabelle stehen 200 Zeilen. Warum ist die Datei 40 Megabyte groß und so träge?

Weil Excel mehr für benutzt hält als das, was man sieht. Die Norm hinter dem Dateiformat beschreibt den benutzten Bereich so: „This element specifies the used range of the worksheet. It specifies the row and column bounds of used cells in the worksheet.“ Und dann kommt der entscheidende Satz: „Used cells include cells with formulas, text content, and cell formatting.“ Eine Zelle zählt also schon dann als benutzt, wenn sie nur eine Rahmenlinie oder eine Hintergrundfarbe trägt – auch wenn nichts darin steht.

?Ich habe die überzähligen Zellen mit der Entf-Taste geleert. Warum bleibt die Datei groß?

Weil die Entf-Taste den Inhalt entfernt, nicht die Formatierung. Nach der Formatbeschreibung enthält eine Zelle unter anderem ihre Position, ihren Wert und ihre Formatierung („Information about the cell's location (reference), value, data type, formatting, and formula is expressed here.“) – und die Formatierung überlebt das Leeren. Die Zelle bleibt in der Datei stehen, nur ohne Wert. Wirksam ist deshalb nicht Leeren, sondern das Entfernen ganzer Zeilen und Spalten oder der Befehl, der Inhalte UND Formate löscht.

?Ist es sparsamer, nur den Datenbereich zu formatieren oder gleich die ganze Spalte?

Erstaunlicherweise die ganze Spalte. Die Formatbeschreibung hält dafür eine eigene Regel fest: „When an entire column is formatted, only the first cell in that column is considered used.“ Wer eine ganze Spalte als Währung formatiert, erzeugt also einen einzigen Eintrag. Wer stattdessen A1:A200000 markiert, weil man ja Reserve haben will, erzeugt 200000 benutzte Zellen. Der scheinbar sorgfältigere Weg ist der teurere.

Belege

Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Verwandte Fehler

SWLästig

Excel-Datei lässt sich nicht mehr öffnen

Excel meldet die Datei als beschädigt? Oft ist nur ein Teil der Datei verletzt — mit dem richtigen Öffnen-Modus ist ein Großteil oft noch zu retten.