Zum Inhalt springen

Google Sheets-Kochbuch: Tabellen (Tables)

Aus Wikibooks


Arbeiten mit Tabellen (Tables)

[Bearbeiten]

Die Bezeichnung "Tabellen" (englisch Tables) ist in Google Sheets mehrdeutig. Eine Tabelle kann die Datei sein, ein Tabellenblatt oder ein besonderer Bereich auf einem Tabellenblatt. Hier geht es um einen Bereich, der explizit als zusammengehöriger Datensatz gekennzeichnet wird. Dies wird im Folgenden "Tabelle" genannt.

Vorteile der Nutzung von Tabellen:

  • Tabellen können dynamisch wachsen und schrumpfen.
  • Man kann sich in Formeln leicht auf Tabellendaten beziehen.
  • Es lassen sich Datentypen für Spalten vorgeben.

Strukturierte Verweise statt Bereichsangaben

[Bearbeiten]

Hier liegt der größte Gewinn für Ersteller von komplexen Sheets. Anstelle von Zellbezügen nutzt man die Namen der Tabellen und Spalten. Beim Eingeben des Tabellennamens in eine Formel erhält man eine Auto-Vervollständigung inklusive der Spaltenüberschriften.

Syntax

[Bearbeiten]
Syntax Bedeutung
TabellenName[Spalte] Die gesamte Datenspalte (ohne Überschrift). Perfekt für SUMME oder MITTELWERT.
TabellenName Nur die Daten der Tabelle (ohne Überschriften).
TabellenName[#ALL] Die gesamte Tabelle inklusive Überschriften (wichtig für QUERY).
[Spalte] Der Wert der aktuellen Zeile in dieser Spalte.

Tabellennamen dürfen keine Leerzeichen enthalten (z.B. Klasse10b statt Klasse 10b). Spaltennamen dürfen dagegen Leerzeichen haben.

Beispiel Spaltensumme

[Bearbeiten]

Du willst den Gesamtpreis berechnen. Du hast eine Tabelle mit dem Namen "Inventar" und eine Spalte "Preis".

  • Alt (Klassisch): =SUMME(C2:C100) – Das geht kaputt, wenn Zeile 101 dazukommt.
  • Neu (Tabelle): =SUMME(Inventar[Preis])

Beispiel für [Spalte]: Berechnungen innerhalb einer Zeile

[Bearbeiten]

Die Schreibweise [Spalte] bedeutet: "Nimm den Wert aus der Spalte, aber nur aus der aktuellen Zeile".

Das ist das Äquivalent zu klassischen Formeln wie =A2*B2.

Du hast eine Bestellliste und möchtest den Gesamtpreis pro Position berechnen (Menge mal Einzelpreis).

Tabelle: Bestellungen
Produkt Menge Einzelpreis Gesamtpreis (Formel)
Schrauben 100 0,05 € Hier soll das Ergebnis hin
Muttern 50 0,03 € ...

Die Vorgehensweise:

[Bearbeiten]
  1. Klicke in die erste Zelle der Spalte "Gesamtpreis".
  2. Tippe das Gleichzeichen =.
  3. Schreibe [Menge]*[Einzelpreis]. Google ergänzt den Tabellennamen.
  4. Drücke Enter bzw. übernimm die Formel für die ganze Tabelle.

Die Formel lautet nun:

=Tabelle1[Menge] * Tabelle1[Einzelpreis]

Der Unterschied zu normalen Bereichen:

[Bearbeiten]
  • Beim Einfügen neuer Zeilen wird die Berechnung automatisch übernommen.
  • Beim Verschieben der Spalten bleibt die Berechnung erhalten, da die Berechnung von den Spaltennamen abhängt.

Das ETF-Portfolio

[Bearbeiten]

Ergebnis der Auswertung


In unserem Beispiel haben wir eine Liste mit Investitionen in ETFs. Die Einzahlungen erfolgen unregelmäßig und nicht immer in alle Fonds gleichzeitig (daher gibt es leere Zellen).

Datum MSCI World Stoxx EU 600 EM EMU Small Cap
31.07.2025 400,00 € 65,00 € 150,00 €
31.08.2025 400,00 € 65,00 € 150,00 €
30.09.2025 400,00 € 65,00 € 150,00 €
15.10.2025 84,00 €
31.10.2025 400,00 € 65,00 € 150,00 €
30.11.2025 400,00 € 65,00 € 150,00 €
28.12.2025 440,00 € 71,50 € 226,00 € 133,00 €

Die Liste wird ständig erweitert, da bei jeder neuen Einzahlung eine neue Zeile eingefügt wird. Unterhalb der Tabelle wollen wir die Auswertung anfügen (den aktuellen Portfoliowert).

Konvertieren des Datenbereichs in eine Tabelle

[Bearbeiten]
  1. Markiere irgendeine Zelle innerhalb deiner Daten.
  2. Wähle im Menü Format > In Tabelle konvertieren.
  3. Benenne die Tabelle von "Tabelle1" in "Transaktionen" um.

Das Ergebnis:

  • Der Bereich hat jetzt einen farbigen Rahmen und ein eigenes Menü (kleiner Pfeil oben links).
  • Die Kopfzeile ist automatisch fixiert.
  • Wenn du direkt unter der Tabelle neue Daten eintippst, erweitert sich die Tabelle automatisch. Formeln, Dropdowns und Formatierungen werden sofort auf die neue Zeile übertragen.

Wir fügen nun unter der Tabelle (mit etwas Abstand, z.B. in Zeile 11) den aktuellen Kurswert der ETFs ein.

Tabelle: Transaktionen
Datum MSCI World Stoxx EU 600 EM EMU Small Cap
31.07.2025 400,00 € 65,00 € 150,00 €
... ... ... ...
28.12.2025 440,00 € 71,50 € 226,00 € 133,00 €

Aktueller Wert (Manuelle Eingabe unter der Tabelle, z.B. Zeile 11):

08.01.2026 2.534,67 € 424,29 € 1.054,87 € 224,66 €

Die Auswertung: XIRR

[Bearbeiten]

Mit der Funktion XIRR() (Interner Zinsfuß) berechnen wir die Rendite. Wir brauchen:

  1. Einen Bereich mit Zahlungsströmen (Investitionen müssen negativ, der Endwert positiv sein – oder umgekehrt).
  2. Einen Bereich mit den dazugehörigen Datumsangaben.
  3. Keine leeren Zellen in den Bereichen.

Wir müssen die Investitionen aus der Tabelle filtern (leere Zellen ignorieren) und mit dem aktuellen Wert verknüpfen. Statt mit Zellbereichen wie B2:B18 zu arbeiten, können wir jetzt die Spaltennamen verwenden.

Die Formel für den "MSCI World" (Spalte B)

[Bearbeiten]

Wir gehen davon aus, dass der aktuelle Wert in Zelle B11 steht und das Datum des aktuellen Wertes in A11.

=XIRR( 
   { 
     FILTER( Transaktionen[MSCI World] * -1 ; Transaktionen[MSCI World] <> "" ); 
     B11 
   }; 
   { 
     FILTER( Transaktionen[Datum] ; Transaktionen[MSCI World] <> "" ); 
     A11 
   } 
)

Erklärung

[Bearbeiten]
  1. Die Tabelle heißt "Transaktionen", die Spalte "MSCI World".
  2. Transaktionen[MSCI World] * -1: Wir nehmen die ganze Spalte aus der Tabelle und drehen das Vorzeichen um (Investition = Auszahlung = negativ).
  3. FILTER(...; ... <> ""): Wir entfernen alle leeren Zeilen (Monate ohne Sparrate).
  4. ... ; B11: Wir hängen den aktuellen Kurswert (aus der Zelle unter der Tabelle) als letzte "fiktive Rückzahlung" an die Liste an. Dieser muss positiv sein. (Tipp: Alternativ kannst du der Zelle B11 auch einen Namen geben, z.B. MSCI_Aktuell).
  5. A11: Das Datum der Wertfeststellung (z.B. HEUTE oder der 08.01.2026).

Der Vergleich

[Bearbeiten]
Ohne Tables Mit Tables
Du musst raten, wie lang deine Liste wird:
FILTER($A2:$A999; B2:B999<>"")
Der Bereich passt immer exakt:
FILTER(Transaktionen[Datum]; ...)
Die Formel ist voll mit Dollarzeichen ($), um Spalten zu fixieren. Der Code ist lesbar und "spricht" (z.B. "MSCI World").
Wenn du eine Zeile einfügst, gehen Bezüge evtl. kaputt. Neue Zeilen werden automatisch Teil des Datensatzes.

Mehrere Spalten mit strukturierten Verweisen

[Bearbeiten]

Bisher haben wir strukturierte Verweise genutzt, um einzelne Spalten einer Tabelle anzusprechen. Es ist jedoch auch möglich, zusammenhängende Bereiche über mehrere Spalten hinweg zu referenzieren. Das Ergebnis ist ein zweidimensionaler Bereich, vergleichbar mit klassischen Zellbereichen wie B2:D20.

Syntax

[Bearbeiten]
Syntax Bedeutung
Transaktionen[MSCI World] Eine einzelne Datenspalte (ohne Überschrift).
Transaktionen[[#ALL],[MSCI World]] Eine Spalte inklusive Überschrift (zweidimensionaler Bereich).
Transaktionen[[#ALL],[MSCI World]:[EM]] Mehrere zusammenhängende Spalten inklusive Überschriften.

Der Ausdruck [[#ALL], ...] erzwingt einen zweidimensionalen Rückgabewert. Ohne #ALL liefern strukturierte Verweise immer nur eine einzelne Spalte ohne Kopfzeile.

Beispiel: Mehrere ETF-Spalten gleichzeitig auswerten

[Bearbeiten]

Wir möchten mehrere ETFs gemeinsam auswerten, z.B. mit der Funktion QUERY(). Mit klassischen Zellbereichen würde man dafür einen festen Bereich wie B1:D999 angeben. Mit Tabellen können wir stattdessen die Spaltennamen verwenden.

=QUERY(
   Transaktionen[[#ALL],[MSCI World]:[EM]];
   "select * where Col1 is not null";
   1
)

Erklärung

[Bearbeiten]
  1. [MSCI World]:[EM] definiert den Spaltenbereich innerhalb der Tabelle.
  2. #ALL sorgt dafür, dass die Überschriften Teil des Bereichs sind (erforderlich für QUERY).
  3. Der Bereich wächst automatisch mit, wenn neue Zeilen oder Spalten in der Tabelle ergänzt werden.


Der Vergleich

[Bearbeiten]
Klassischer Bereich Tabelle
B1:D999 Transaktionen[[#ALL],[MSCI World]:[EM]]

Einschränkungen & Unterschiede zu Excel

[Bearbeiten]

Obwohl Google Sheets Tabellen (Tables) optisch und funktional den Excel-Tabellen ähneln, gibt es grundlegende Unterschiede in der Implementierung.

Keine Tabellen als Ergebnis von Abfragen (QUERY)

[Bearbeiten]

In Excel ist es ein Standard-Workflow, Daten mittels Power Query zu bearbeiten und das Ergebnis als "Intelligente Tabelle" auszugeben. Das funktioniert in Google Sheets nicht.

  • Das Problem: Die Funktion QUERY (oder auch FILTER, SORT) erzeugt ein dynamisches Array, das den Inhalt vieler Zellen überschreibt ("Spill").
  • Der Konflikt: Das Feature "Table" erwartet, dass es die volle Kontrolle über jede einzelne Zeile hat (für Formatierung, Dropdowns etc.).
  • Die Konsequenz: Du kannst das Ergebnis einer QUERY-Formel nicht in eine "Tabelle" konvertieren. Tust du es doch, wird die Formel zerstört oder die Tabelle funktioniert nicht mehr dynamisch.

Weitere Einschränkungen

[Bearbeiten]
  • Apps Script: Die Unterstützung für Tabellen in Google Apps Script ist noch rudimentär (Stand 2025). Es gibt keine dedizierten Klassen (wie `ListObject` in VBA). Man muss weiterhin über `getRange` und Koordinaten arbeiten.
  • Komplexe Layouts: erzwingen eine strikte Datenbank-Struktur (eine Zeile = ein Datensatz). Zwischenüberschriften, leere Trennzeilen oder verbundene Zellen innerhalb der Daten sind nicht möglich oder führen zu Fehlern.
  • Geschützte Bereiche: Es ist oft schwierig, nur einzelne Spalten einer Tabelle zu schützen, da die Tabelle versucht, Berechtigungen auf neue Zeilen dynamisch anzuwenden.


Die Beispiele auf dieser Seite wurden getestet: 01/2026