Logo Paul Powerquery

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

Paul Powerquery

Home » Power Query » Profi » Sprache M » Schleifen » List.Generate – Erweitert

Soweit, so gut, doch was, wenn Du für die Parameterliste von List.Generate mehrere Werte benötigst oder als Parameter übergeben willst?

Vielleicht hast Du es ja eben noch nicht bemerkt, doch in Bsp. 1 und Bsp. 2 verwendeten wir noch hartcodierte Variablenwerte:

List.Generate(
               () => 0,
               each _ < 13,
               each _+2,
               each _*_
             ) 

Die 0 als Startwert, die 13 als Endwert und die 2 für die Schrittweite. In Bsp. 3 hatte ich bereits Variablen dafür eingesetzt. Die sind zwar an dieser Stelle immer noch hartcodiert, haben jetzt aber Variablennamen, mit denen wir arbeiten und die wir ggf. sogar mehrfach verwenden können (ein weiterer Vorteil von Variablen).
Wie man Variablen tatsächlich voll variabel macht, erfährst Du im Kapitel Variablen.
Schauen wir uns die Änderung zum obigen Code mal genauer an:

let   
   Startwert = 0,   
   Maxwert = 13,   
   Schrittweite = 2,         
   GenerierteListe =       
          List.Generate (            
                           () => Startwert ,            
                           each _< Maxwert ,            
                           each _+Schrittweite ,              
                           each NeueListenwerte(_)        
                        ),
...
...
in 
   GenerierteList

Hierbei machen wir uns folgenden Umstand zu Nutze:

  • jeder Schrittname,
  • der unterhalb von let und (logischerweise)
  • vor einem = steht,
  • kann über diesen Schrittnamen (der vor dem = steht) in der kompletten Abfrage als Variable mit diesem Schrittnamen verwendet werden.

    Konkret:
    Die Werte der Schritte Startwert, Endwert, Schrittweite können innerhalb der AbfrageList_Generate Beispiel 3“ (ihrem Gültigkeitsbereich über deren Schrittnamen (Zeilen 9, 10 und 11 im Bild) ermittelt werden .

Hier wurden außerhalb der Anweisung „GenerierteListe“, die ja das Resultat der Funktion List.Generate aufnehmen soll, 3 Variablen deklariert und initialisiert.

  • Startwert = 0
  • Endwert = 13
  • Schrittweite = 2

Es sind jedoch private Variablen, da sie tatsächlich nur innerhalb dieser Abfrage bekannt sind dafür aber in dieser Abfrage von jedem einzelnen Schritt abgefragt und verwendet werden können.
Aufruf und Verwendung durch andere Abfragen ist allerdings so nicht möglich. Wie das möglich ist, wird in einem separaten Thema (Metadaten) behandelt werden.



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