Office Script: getUsedRange() verstehen

In diesem Beitrag erkläre ich, was getUsedRange() in Office Script macht und wie die Werte als 2D-Array zurückgegeben werden. Außerdem zeige ich, warum man beim Einfügen an anderer Stelle die Ziel-Range exakt dimensionieren muss.

EXCELOFFICE SCRIPT

9/24/20251 min read

Office Script: getUsedRange() verstehen

Heute habe ich mir getUsedRange() angesehen. Die Methode liefert mir den Bereich, der in einem Tabellenblatt tatsächlich belegt ist, also vom ersten bis zum letzten genutzten Zellbereich (ohne leeren Rand drumherum). Auf diesem Bereich kann ich dann z. B. die Werte abholen.

Mein Aha-Moment

Wenn ich vom getUsedRange() die Inhalte abfrage (z. B. Werte oder Texte), erhalte ich sie als zweidimensionales Array. Praktisch gedacht: eine Zeile = ein Array, darin die Spaltenwerte als einzelne Elemente.


Das heißt:
– Anzahl der Arrays = Anzahl der Zeilen
– Anzahl der Indizes je Array = Anzahl der Spalten
So kann ich zeilenweise durch die Daten gehen, filtern, transformieren oder später weiterverarbeiten.

Inhalte zwischen­speichern und die Stolperfalle beim Einfügen

Ich kann den Inhalt des Used Range bequem in einer Variable zwischenspeichern (z. B. für Transformationen). Will ich diesen 2D-Array später woanders einfügen, reicht „einfach reinkopieren“ nicht.

Office Script braucht dafür eine definierte Ziel-Range mit exakt passender Größe:
– gleich viele Zeilen wie das äußere Array,
– gleich viele Spalten wie die Länge der inneren Arrays.


Stimmen die Dimensionen nicht, gibt’s Fehler. Wie man die Ziel-Range korrekt dimensioniert (Indexierung, Größe bestimmen, sauber zuweisen), zeige ich in einem separaten Beitrag.

Mein Fazit

getUsedRange() ist der schnellste Weg, um den tatsächlichen Datenbereich eines Blatts zu greifen. Denkweise: „Zeilenarray von Spaltenarrays“. Beim späteren Einfügen unbedingt an die identische Range-Größe denken – dann klappt der Rundtrip Speicher → Zielbereich zuverlässig.

Weitere interessante Beiträge:

Wie man Bereiche dynamisch dimensionieren kann.

Wie man mit getRangeByIndexes() Bereiche definiert.

Office Script getUsedRange() Verdeutlichung
Office Script getUsedRange() Verdeutlichung
Office Script getUsedRange() Beispielcode
Office Script getUsedRange() Beispielcode