Logo Paul Powerquery

(Noch in der Rohbauphase. Offizieller Start: ca. 6/2026)

Paul Powerquery

Home » Power Query » Profi » Sprache M » Schleifen » List.Generate – Einführung

Vorab, Schleifen beeinflussen die Performance. Deshalb sollten sie nur dann eingesetzt werden, wenn es unumgänglich ist. Überall da, wo Dir PQ einen Parameter mit each anbietet
Bsp = Table.AddColumn(Quelle, „Neue Spalte“, each [Column1] * [Column1])
durchläuft PQ ja von Haus aus jede Zeile.

Zur Funktion selbst:
Die Funktion List.Generate ist vergleichbar mit for-Schleifen aus anderen Programmiersprachen.

Ihre Syntax:
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list

Die Funktion liefert als Rückgabewert eine Liste (as List)

Sie erwartet 3 Parameter garantiert + einen optionalen Parameter. Alle Parameterangaben, bis auf den jeweils letzten, müssen mit Komma beendet werden.

  • initial ist der Startwert
    im Bsp.: () => Startwert,
    wobei der Startwert mit 0 initialisiert wurde
  • condition ist die Abbruchbedingung
    im Bsp.: _< Maxwert,
    wobei der Unterstrich als Platzhalter für den letzten, Wert von Startwert steht, der die next-Anweisung durchlaufen hat.
    List.Generate wird solange ausgeführt, wie die Bedingung wahr ist.

    und dieser muss < als der (mit 13 initialiserte Maxwert) sein
  • next gibt an, um welchen Wert der jeweils zuletzt iterierte Startwert erhöht/ermindert werden soll.
    im Bsp.: _+2, (nach jedem Durchlauf um 2 erhöhen)
  • selector ist ein optionaler Parameter, der jedoch eine Funktion aufrufen muss!
    im Bsp 2.: _*_ (sprich: aktueller Wert mal aktuellem Wert)

Beipiel 1 (ohne optionalem Parameter)

Erläuterung:
(initial): Beim 1. Durchlauf ist der Startwert 0.

(condition): Die Schleife wird solange ausgeführt, wie
die Bedingung (_< Maxwert – lies: aktueller Wert ist kleiner 13) wahr ist.

(next): Er wird bei jedem weiteren Durchlauf durch die Anweisung _+2
jeweils um 2 erhöht. (auch Verminderung ist möglich)

Die Ausgabe ist somit: 0, 2, 4, 6, 8, 10, 12

Beispiel 2 (mit optionalen viertem Funktionsparameter – _*_)

_*_ sieht vielleicht nicht aus wie eine Funktion, ist aber eine. _*_ bedeutet nichts anderes als: Multipliziere den aktuellen Wert (_) mit sich selbst,
oder anders ausgedrückt: aktueller Wert mal aktuellem Wert.
Jetzt erhalten wir eine ganz andere Ausgabe, nämlich:

0 * 0 = 0
2 * 2 = 4
4 * 4 = 16
6 * 6 = 36
8 * 8 = 64
10 * 10 = 100 und
12 * 12 = 144

Statt _*_ können wir auch jede andere beliebige Funktion übergeben, die etwas mit dem aktuellen Wert (_) in deren Parameter anfangen kann und deren Rückgabewert dann in der Liste gespeichert wird.

Beispiel 3 (Verwendung von Variablen und eine benutzdefinierte Funktion aufrufen)

Die Ausgabe:


Man kann die Welt nicht bessermeckern…
Ich behalte mir deshalb vor, alle Kommentare, die nicht den Normen eines höflichen und wohlwollenden Umgangs miteinander entsprechen, bei denen ich Beleidigungen, Lügen, extremistische Inhalte (egal ob aus der islamistischen, rechten, linken oder welcher beschränkten ideologischen Ecke auch immer), bemerke oder auf die ich aufmerksam gemacht wurde und die meiner Einschätzung nach diesen NoGo’s entsprechen, unverzüglich zu löschen.
Ich lege Wert auf einen sachlichen, freundlichen und respektvollen Umgang unter- und miteinander!
Hier ist kein Platz für Lügen, Hass und Hetze!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert