🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

GROUPBY & PIVOTBY für Fortgeschrittene — Prozent vom Gesamt, mehrere Kennzahlen und eigene Aggregationen

|

GROUPBY & PIVOTBY für Fortgeschrittene — Prozent vom Gesamt, mehrere Kennzahlen und eigene Aggregationen

KurzfassungGROUPBY und PIVOTBY teilen sich eine Reihe optionaler Argumente, die Dinge tun, die eine PivotTable nicht in einem Zug schafft: PERCENTOF liefert Prozent vom Gesamt im Funktion-Platz (=GROUPBY(C2:C1000; D2:D1000; PERCENTOF)), ein HSTACK von Funktionen gibt mehrere Kennzahlen auf einmal zurück, ein LAMBDA in genau diesem Platz baut einen gewichteten Mittelwert, und Filterarray aggregiert nur die Zeilen, die Sie wählen — alles live. Beherrschen Sie die Funktion-Grammatik, und Sie greifen nicht mehr zu Hilfsspalten.

=GROUPBY(C2:C1000; D2:D1000; PERCENTOF)                      ' Anteil jeder Region an der Gesamtsumme
=GROUPBY(C2:C1000; D2:D1000; HSTACK(SUM; AVERAGE; COUNT))    ' drei Kennzahlen nebeneinander
=GROUPBY(C2:C1000; D2:D1000; LAMBDA(v; SUM(v)/COUNT(v)))     ' eine eigene Aggregation
=GROUPBY(C2:C1000; D2:D1000; SUM; ; ; ; (E2:E1000="West"))   ' nur Zeilen, in denen Region = West

Der einfache GROUPBY/PIVOTBY-Aufruf — gruppieren, aggregieren, überlaufen — ersetzt bereits die alltägliche PivotTable. Bei den optionalen Argumenten ziehen sie an ihr vorbei. Prozent vom Gesamt, mehrere Aggregationen in einem Raster, ein gewichteter Mittelwert, ein Vorfilter auf den Zeilen: Jedes ist hier ein eingebautes Argument und in einer PivotTable eine Rechtsklick-und-konfigurieren-Pflichtübung (oder unmöglich). Der Schlüssel, der all das freischaltet, ist zu verstehen, was das Argument Funktion wirklich annimmt.

Was Sie lernen

  • Prozent vom Gesamt in einem Wort mit PERCENTOF — und seine häufigste Falle
  • Mehrere Kennzahlen auf einmal durch Stapeln von Funktionen
  • Eine eigene Aggregation, indem Sie ein LAMBDA in den Funktionsplatz setzen
  • Zeilen vor dem Aggregieren filtern mit Filterarray
  • Die Fehler lesen: #CALC!, #FIELD!, #SPILL! zeigen jeweils auf ein Argument

Der Funktionsplatz nimmt mehr als SUM an

Die eine Idee hinter jedem Kniff in diesem Artikel: Das Argument Funktion ist nicht auf die eingebauten Namen beschränkt. Es nimmt jede eta-reduzierte Funktion an — einen nackten Namen wie SUM, einen Stapel von Namen, einen zweckgebauten Helfer wie PERCENTOF oder ein vollständiges LAMBDA, das Sie schreiben. Sobald Sie diesen Platz als „jede Funktion, die eine Spalte in eine Zusammenfassung verwandelt" sehen, hören die fortgeschrittenen Funktionen auf, getrennte Funktionen zu sein, und werden zu einem flexiblen Argument.

=GROUPBY(Zeilen; Werte; SUM)                       ' ein eingebauter Name
=GROUPBY(Zeilen; Werte; PERCENTOF)                 ' ein zweckgebauter Helfer
=GROUPBY(Zeilen; Werte; HSTACK(SUM; AVERAGE))      ' mehrere Namen auf einmal
=GROUPBY(Zeilen; Werte; LAMBDA(v; MAX(v)-MIN(v)))  ' Ihre eigene Funktion

Prozent vom Gesamt mit PERCENTOF

Der meistgefragte Bericht — „welchen Anteil am Gesamt hat jede Gruppe?" — ist ein einziges Wort. PERCENTOF summiert jede Gruppe und teilt durch die Summe von allem:

=GROUPBY(C2:C1000; D2:D1000; PERCENTOF)   ' Region | % der Gesamtsumme (jede Zeile, z. B. 0,32)

Die Falle: Das Ergebnis ist ein Bruch, kein formatierter Prozentwert. 0,32 sind zweiunddreißig Prozent, aber die Zelle zeigt 0,32, bis Sie das Zahlenformat Prozent (Strg+Umschalt+%) auf den Überlauf anwenden. Das erwischt jeden einmal — die Zahl stimmt, die Anzeige nicht, und man hält die Formel für kaputt. Formatieren Sie den Überlaufbereich als Prozent, und er liest sich als 32 %. Anteil und Summe zusammen? Stapeln Sie sie: HSTACK(SUM; PERCENTOF) gibt den Betrag und seinen Prozentsatz in benachbarten Spalten.

Mehrere Kennzahlen auf einmal durch Stapeln von Funktionen

Sie führen GROUPBY nicht dreimal für Summe, Mittelwert und Anzahl aus — Sie stapeln die Funktionen mit HSTACK und erhalten drei Ergebnisspalten aus einer Formel:

=GROUPBY(C2:C1000; D2:D1000; HSTACK(SUM; AVERAGE; COUNT))
'  Region | Umsatz gesamt | durchschn. Umsatz | Anzahl Bestellungen

Jede Funktion im Stapel wird zu einer Spalte, in dieser Reihenfolge. Das ist der Bericht, den eine PivotTable Sie bauen lässt, indem Sie dasselbe Feld dreimal in Werte ziehen und bei jedem „Zusammenfassen nach" ändern; hier ist es ein Ausdruck, und er liest sich wie die Kopfzeile, die Sie wollen: SUM; AVERAGE; COUNT. Beachten Sie den Unterschied zum Verbreitern von Werte: mehr Wertespalten aggregieren andere Daten auf dieselbe Weise; mehr Funktionen aggregieren dieselben Daten auf andere Weise. Kombinieren Sie beides für ein volles Kennzahlenraster.

Eine eigene Aggregation: LAMBDA im Funktionsplatz

Wenn keine eingebaute Funktion passt — ein gewichteter Mittelwert, eine Spannweite, ein gestutzter Wert —, schreiben Sie ein LAMBDA. Es erhält die Werte jeder Gruppe als Array v, und was immer es zurückgibt, wird zum Aggregat:

=GROUPBY(C2:C1000; D2:D1000; LAMBDA(v; MAX(v) - MIN(v)))          ' die Spannweite je Gruppe
=GROUPBY(C2:C1000; D2:D1000; LAMBDA(v; TEXTJOIN(", "; 1; v)))     ' die Mitglieder auflisten, nicht summieren
=GROUPBY(C2:C1000; D2:D1000; LAMBDA(v; SUMPRODUCT(v; w)/SUM(w)))  ' ein gewichteter Mittelwert (w = Gewichte)

Das ist die Decke, die eine PivotTable schlicht nicht erreicht: Ihr Menü „Werte zusammenfassen nach" ist eine feste Liste, während der LAMBDA-Platz jede Logik ausführt, die Sie ausdrücken können. Die Regel zum Merken — Ihr LAMBDA bekommt die Werte der Gruppe als ein Argument und muss einen einzigen Wert pro Gruppe zurückgeben; gibt es ein Array zurück, erhalten Sie #CALC!. Gewichtete Mittelwerte, Mediane einer gefilterten Teilmenge, „Spitzenwert als Text" — alle leben in diesem Platz.

Die Zeilen vor dem Aggregieren filtern

Filterarray (das siebte Argument von GROUPBY) nimmt ein Wahrheitswert-Array in derselben Höhe wie Ihre Daten und aggregiert nur die WAHR-Zeilen — keine Hilfsspalte, kein Vorfilterschritt:

=GROUPBY(C2:C1000; D2:D1000; SUM; ; ; ; (E2:E1000 = "West"))         ' nur Zeilen der Region West
=GROUPBY(C2:C1000; D2:D1000; SUM; ; ; ; (YEAR(A2:A1000) = 2026))     ' nur Zeilen aus 2026
=GROUPBY(C2:C1000; D2:D1000; SUM; ; ; ; (D2:D1000 >= 1000))          ' nur Bestellungen >= 1000

Die Bedingung wird wie ein FILTER-Test geschrieben — ein Vergleich, der WAHR/FALSCH die Spalte hinunter erzeugt. Die eine Regel, die den Fehler verhindert: Das Filterarray muss genau so hoch sein wie Zeilenfelder und Werte. Richten Sie es auf E2:E1000, während Ihre Daten E2:E999 sind, erhalten Sie #VALUE!; halten Sie jeden Bereich gleich hoch, und es funktioniert einfach. So bauen Sie Übersichten für „nur dieses Jahr", „ohne Rückerstattungen" oder „nur West und East", ohne die Quelldaten anzufassen.

Die Fehler lesen

Die drei Fehler, die diese Funktionen werfen, zeigen jeweils auf einen bestimmten Fehler — lernen Sie die Karte, und die Fehlersuche geht sofort:

#CALC!    ' der Funktionsplatz ist falsch: SUM() statt SUM oder ein LAMBDA, das ein Array zurückgibt
#FIELD!   ' ein Feld-/Spaltenbezug stimmt nicht — oft Feldüberschriften falsch gesetzt, Überschriften rutschen mit hinein
#SPILL!   ' das Ergebnis ist blockiert — die Zellen unter und rechts der Formel freiräumen
#VALUE!   ' meist ist Filterarray eine andere Höhe als die Daten

#CALC! ist fast immer das Argument Funktion — ein aufgerufenes SUM() oder ein LAMBDA, das mehr als einen Wert pro Gruppe zurückgibt. #FIELD! zeigt auf die Datenform, häufig das Argument Feldüberschriften: Wenn Ihre Bereiche die Überschriftszellen einschließen, setzen Sie Feldüberschriften auf 1, damit die Beschriftungen nicht als Daten gruppiert werden. #SPILL! ist räumlich, nie logisch — die Formel ist in Ordnung, die Landezone nicht. Und #VALUE! bei einer gefilterten Aggregation ist die Höhen-Diskrepanz von oben. Jeder Fehler ist ein Wegweiser zu einem Argument, kein Rätsel.

Die Abwägung

Sobald eine Übersicht Prozent vom Gesamt, mehr als eine Kennzahl, eine eigene Berechnung oder eine Teilmenge der Zeilen braucht, schlagen diese optionalen Argumente eine PivotTable klar — jedes ist hier ein Argument und dort ein Menü-Tauchgang oder eine Sackgasse. Behalten Sie drei Regeln im Griff: Der Funktion-Platz nimmt einen nackten Namen, einen gestapelten Satz von Namen oder ein LAMBDA, das einen Wert pro Gruppe zurückgibt; PERCENTOF gibt einen Bruch zurück, den Sie als Prozent formatieren müssen; und Filterarray muss so hoch sein wie die Daten. Lesen Sie die Fehler als Karte — #CALC! heißt die Funktion, #FIELD! heißt die Überschriften, #SPILL! heißt der Platz, #VALUE! heißt die Filterhöhe — und die letzte Ausrede, eine PivotTable zu behalten (dass sie das Ausgefallene kann), fällt größtenteils weg.

Wie ExcelMaster hilft

Die fortgeschrittenen Argumente sind mächtig und unnachgiebig — ein Array-zurückgebendes LAMBDA, und das Ganze ist #CALC!. Sagen Sie ExcelMaster „Umsatz jeder Region, ihr Anteil am Gesamt und die Bestellanzahl", und es schreibt =GROUPBY(C2:C1000; D2:D1000; HSTACK(SUM; PERCENTOF; COUNT)) und formatiert die Prozentspalte für Sie. Bitten Sie um „einen gewichteten Durchschnittspreis je Kategorie, gewichtet nach Menge", und es baut das LAMBDA. Und wenn eine Formel #CALC! oder #VALUE! zurückgibt, liest es den Fehler so, wie dieser Leitfaden es tut — es zeigt auf genau das falsche Argument, statt Sie Semikolons zählen zu lassen.

Häufige Fragen

Wie zeige ich Prozent vom Gesamt in GROUPBY oder PIVOTBY?

Nutzen Sie PERCENTOF im Funktion-Platz: =GROUPBY(C2:C1000; D2:D1000; PERCENTOF). Es teilt die Summe jeder Gruppe durch die Gesamtsumme. Das Ergebnis ist ein Bruch wie 0,32, wenden Sie also Prozentformatierung (Strg+Umschalt+%) auf den Überlauf an, um 32 % zu sehen. Um Betrag und Anteil nebeneinander zu zeigen, nutzen Sie HSTACK(SUM; PERCENTOF).

Kann GROUPBY mehr als eine Aggregation auf einmal zurückgeben?

Ja — stapeln Sie die Funktionen: =GROUPBY(C2:C1000; D2:D1000; HSTACK(SUM; AVERAGE; COUNT)) gibt drei Spalten zurück. Jede Funktion wird zu einer Ergebnisspalte, in dieser Reihenfolge. Das unterscheidet sich vom Verbreitern des Bereichs Werte, das andere Spalten auf dieselbe Weise aggregiert; das Stapeln von Funktionen aggregiert dieselbe Spalte auf mehrere Weisen.

Wie nutze ich eine eigene Formel als Aggregation?

Setzen Sie ein LAMBDA in den Funktion-Platz. Es erhält die Werte jeder Gruppe als Array und muss einen einzigen Wert zurückgeben: =GROUPBY(C2:C1000; D2:D1000; LAMBDA(v; MAX(v)-MIN(v))). Das deckt gewichtete Mittelwerte, Spannweiten und alles ab, was die eingebaute Liste „Zusammenfassen nach" nicht kann. Gibt das LAMBDA ein Array statt eines Werts zurück, erhalten Sie #CALC!.

Wie filtere ich, welche Zeilen GROUPBY aggregiert?

Nutzen Sie das Argument Filterarray (das siebte): =GROUPBY(C2:C1000; D2:D1000; SUM; ; ; ; (A2:A1000="West")) aggregiert nur die passenden Zeilen. Die Bedingung wird wie ein FILTER- Test geschrieben, und das Wahrheitswert-Array muss so hoch sein wie Ihre Daten — eine Diskrepanz gibt #VALUE! zurück.

Warum gibt mein GROUPBY #CALC! oder #FIELD! zurück?

#CALC! heißt fast immer, dass das Argument Funktion falsch ist: SUM() statt SUM oder ein LAMBDA, das ein Array statt eines Werts pro Gruppe zurückgibt. #FIELD! heißt meist, dass das Argument Feldüberschriften nicht stimmt — setzen Sie es auf 1, wenn Ihre Bereiche Überschriftszellen einschließen, damit die Beschriftungen nicht als Daten behandelt werden. #SPILL! hat nichts mit Logik zu tun; es heißt, dass Zellen darunter oder rechts das Ergebnis blockieren.

Getestet in

Getestet in: Excel 365 (Windows 11) — zuletzt geprüft am 18.07.2026.

Verwandte Anleitungen: Excel GROUPBY · Excel PIVOTBY · Excel LAMBDA · LAMBDA-Helfer · Excel FILTER