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.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.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.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.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.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.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="[^"]*"'