Zeilen in definierter Zahl wiederholen

  Wis­sens­stand: Lev­el 1 ⇒ Ein­steiger in PQ, keine/kaum Erfahrung   

Xtract: Mit Pow­er Query eine Zeile in definiert­er Anzahl wieder­holen bzw. mit einem definier­baren Startwert bis zum Endw­ert in 1er-Schrit­ten hochzählen.

Diese Excel-Tabelle dient als Basis für den Liefer­schein. Ver­schiedene Pro­duk­te der Liefer­ung heben sich dadurch her­vor, dass jedes einzelne Teil eine indi­vidu­elle Seri­en­num­mer hat, welche auch im Liefer­schein notiert wer­den muss. Für diese Exem­plare soll­ten die jew­eilige Zeile, jed­er Daten­satz so oft wieder­holt wer­den, bis die Anzahl der geliefer­ten Stücke in der Anzahl des passenden Daten­satzes erre­icht ist. Wer­den also beispiel­sweise drei Fest­plat­ten ver­sandt, dann soll die Zeile um zwei weit­ere, gle­ichar­tige Zeilen ergänzt wer­den. Gibt es für den Artikel keine Seri­en­num­mer, dann bleibt es bei der einen Zeile, wie auch bei den Artikeln, wo nur ein Stück geliefert wor­den ist, selb­st wenn eine S/N einge­tra­gen wer­den soll.

Schnell und Effektiv

Wech­seln Sie nach dem Import der Tabelle in den Pow­er Query-Edi­tor in das Reg­is­ter Spalte hinzufü­gen und Klick­en Sie auf das Sym­bol Benutzerdefinierte Spalte. Im Dia­log vergeben Sie als Neuer Spal­tenname beispiel­sweise Liste. In dem großen Textbere­ich Benutzerdefinierte Spal­tenformel: geben Sie diese Formel ein, um die Liste zu gner­ieren:
{1..[Lieferung]}.
Die äußeren Klam­mern sind geschweifte Klam­mern (Alt­Gr7 bzw. Alt­Gr0), nicht die üblichen run­den Klam­mern. Den Spal­tenna­men [Liefer­ung] kön­nen Sie am leicht­esten übernehmen, wenn sie einen Dop­pelk­lick auf den Ein­trag im Kas­ten Ver­füg­bare Spal­ten: durch­führen. Selb­stre­dend kön­nen Sie hier auch bei Bedarf einen fes­ten Wert ein­tra­gen. 😎 Und das Ganze stellt sich nun so dar:

Erstellen einer Benutzerdefinierten Spalte mit einer Formel

Erstellen ein­er Benutzerdefinierten Spalte mit dieser Formel

Nach einem Klick auf die Schalt­fläche OK erken­nen Sie, dass eine neue Spalte mit der Über­schrift Liste gener­iert wurde. Der Inhalt jed­er einzel­nen Zelle ist List. Erweit­ern Sie diese Spalte und durch einen Klick auf den Dop­pelpfeil Doppelpfeil in der Über­schrift und bestäti­gen Sie die Vor­gabe Auf Neue Zeilen ausweit­en mit einem Mausklick.

Sie wer­den erken­nen, dass das des Guten doch entsch­ieden zu viel war. Schließlich soll­ten ja nur jene Zeilen vervielfacht wer­den, wo eine Seri­en­num­mer einge­tra­gen wer­den soll. Alle anderen Zeilen sollen nur ein Mal existieren. Also wer­den Sie erst ein­mal im recht­en Seit­en­fen­ster die bei­den let­zten Schritte (Hinzuge­fügte benutzerdefinierte… sowie Erweit­erte Liste) ent­fer­nen. Damit ist jet­zt wieder der Zus­tand hergestellt, wie er direkt nach dem Import war.

Hin­weis: Dieses hier geschilderte Vorge­hen ist natür­lich immer dann kurz und knack­ig und auch vol­lkom­men kor­rekt, wenn jed­er in der vorhan­de­nen Zahlen entsprechend der Angaben in ein­er definierten Spalte wieder­holt wer­den soll. Wenn also in jedem Fall der Daten­satz auf die in ein­er Spalte genan­nte Anzahl mul­ti­pliziert wer­den soll, ohne jede Ein­schränkung.

Damit im End­ef­fekt auch jede Zeile min­destens 1 Mal angezeigt wird, wer­den Sie im näch­sten Schritt eine Index-Spalte ein­fü­gen. Spalte hinzufü­gen | Indexs­palte. Erstellen Sie nun ein Dup­likat dieser Abfrage, indem Sie beispiel­sweise über Start | Ver­wal­ten | Duplizieren gehen. Beacht­en Sie bei dieser Gele­gen­heit, dass sich das linke Seit­en­fen­ster erweit­ert und bei­de Abfra­gen dort aufge­lis­tet sind. In dieser Kopie fil­tern Sie nun S/N auf TRUE und Liefer­ung über Zahlen­fil­ter | Größer als…  0. Und mit diesen 3 verbleiben­den Zeilen ver­fahren Sie genau so, wie oben beschrieben und schon eingeübt: Spalte hinzufü­gen | Benutzerdefinierte Spalte und beispiel­sweise Liste als Über­schrift sowie
{1..[Lieferung]}
als Formel eingeben, anschließend mit OK bestäti­gen. Die Spalte Liste wer­den Sie wie gehabt durch Klick auf die Schalt­fläche Doppelpfeil erweit­ern. Diese Query (Abfrage) beste­ht nun aus 8 Zeilen.

Wech­seln Sie jet­zt zur Abfrage Tabelle1. Am ein­fach­sten ist das gewiss, wenn Sie im linken Seit­en­fen­ster auf den entsprechen­den Ein­trag Klick­en. Start | Kom­binieren | Abfra­gen zusam­men­führen und wählen Sie im kleinen Textfen­ster mit dem Drop­Down-Pfeil den Ein­trag Tabelle1 (2). Die ersten Zeilen der expandierten Abfrage wer­den im unteren Kas­ten einge­blendet. Klick­en Sie nun in bei­den Tabellen in die Spalte Index und das Ergeb­nis stellt sich so dar:

Zusammenführen zweier Abfragen

Zusam­men­führen zweier Abfra­gen

Join-Art kann so bleiben, also OK. Eine weit­ere Spalte, ähn­lich der zuvor erstell­ten Liste, wurde gener­iert. Erweit­ern Sie die Über­schrift Tabelle1 (2) und Klick­en Sie auf (Alle Spal­ten auswählen) sowie Ursprünglichen Spal­tenna­men als Prä­fix ver­wen­den. Damit wer­den alle Häkchen ent­fer­nt. Markieren Sie nun einen beliebi­gen Ein­trag, beispiel­sweise Liste. Anschließend OK. Die Abfrage wird nun genau so erweit­ert, wie es sin­nvoll und prinzip­iell auch so gewün­scht ist. Die Spal­ten Index sowie Liste wer­den nun nicht mehr gebraucht, löschen Sie diese. Das geht auch sehr schön nach Markierung der Über­schriften mit Entf.


Reizt es Sie, auch in PQ den End­preis auszurech­nen? Okay, der gehört prinzip­iell nicht in einen Liefer­schein hinein, aber das gilt dann naturgemäß auch für den Einzel­preis. Der Weg zum Ziel geht sog­ar ganz ohne (einzugebene) Formel. Und zwar so:

  • Markieren Sie die Spalte Einzel­preis
  • Spalte hinzufü­gen | Stan­dard | Mul­ti­plizieren
  • Erweit­ern Sie Wert und wählen Sie den unteren Ein­trag:
Der Multiplikator soll aus einer Spalte gelesen werden

Der Mul­ti­p­lika­tor soll aus ein­er Spalte gele­sen wer­den

  • Im Drop­Down rechts der Schalt­fläche wählen Sie das Feld Liefer­ung und OK.
  • Ändern Sie die Über­schrift der Spalte Mul­ti­p­lika­tion auf Gesamt­preis.
  • Markieren Sie nun noch die Spal­ten Einzel­preis und Gesamt­preis, Recht­sklick in eine der bei­den markierten Über­schriften und Typ ändern | Währung.

Damit ist die Auf­gabe kom­plett erfüllt. Start | Schließen und laden und Pow­er Query erstellt auf einem neuen Blatt wird eine Tabelle mit den aktuellen Dat­en der Query erstellt. Bei Bedarf kön­nen Sie hier auch die bei­den Preis-Spal­ten als Währung for­matieren und vielle­icht auch ver­steck­en.

▲ nach oben …

Der „klassische” Weg

Ide­al­er­weise kopieren Sie die ursprüngliche Tabelle (A1:E9), erstellen eine neue Excel-Mappe, fügen in A1 den Inhalt der Zwis­chen­ablage ein und importieren nun diese Tabelle. Alter­na­tiv spe­ich­ern und schließen Sie diese Mappe und laden noch ein­mal die auf unserem Serv­er liegende Datei Zeilen_vervielfachen.xlsx.

Wie gehabt (und weit­er oben beschrieben) importieren Sie die Tabelle in den Pow­er Query-Edi­tor und fügen Sie eine Index-Spalte ein. Dann kön­nten Sie wiederum ein Dup­likat der Abfrage erstellen oder aber Sie erweit­ern den linken Seit­en­bere­ich durch Klick auf den Text Abfra­gen, Recht­sklick auf Tabelle1 und ein Klick auf Ver­weis. Wie auch bei einem Dup­likat wird eine Kopie der Abfrage erstellt. Was Ihnen vielle­icht auf­fällt: Im recht­en Seit­en­fen­ster wer­den nicht die gesamten bish­eri­gen Schritte aufge­führt, son­dern nur der Ein­trag Quelle. Das hat unter Anderem den Vorteil, dass alle Änderun­gen, die Sie später vielle­icht ein­mal in der Ursprungsta­belle vornehmen, automa­tisch in diese Kopie über­nom­men wer­den. Okay, Sie wer­den diese spezielle Funk­tion­al­ität der Ver­weis-Kopie hier nicht nutzen, aber es ist gut, diesen Unter­schied zu ken­nen. Der Klarheit wegen: Den Ver­weis an sich sollen Sie statt des Dup­likats ver­wen­den!

In Tabelle1 (2) wer­den Sie nun wieder die Spalte S/N nach dem Wahrheitswert TRUE fil­tern und auch die 0-Liefer­un­gen aus­blenden. Bei der Gele­gen­heit kön­nten Sie auch gle­ich die verbleiben­den Felder der Seri­en­num­mer „leeren”, indem Sie beispiel­sweise einen Recht­sklick in die Über­schrift S/N durch­führen und im Kon­textmenü den Ein­trag Werte erset­zen… anklick­en und hier TRUE durch null erset­zen; „null” in Klein­buch­staben und als Text (ohne die Anführungsze­ichen). Und nun kön­nen in diese leeren Zellen nach dem Spe­ich­ern in Excel die Seri­en­num­mern von Hand oder per Scan­ner einge­tra­gen wer­den.

Jet­zt aber kommt der wirk­lich andere Teil 😉 . Spalte hinzufü­gen | Benutzerdefinierte Spalte und als Über­schrift gerne wieder Liste. Die Formel aber ist eine andere:
List.Range({1..[Lieferung]},0)

Der innere Teil der Formel wird Ihnen bekan­nt vorkom­men, er entspricht dem vorheri­gen Mod­ell. Das List.Range() entstammt dem Fun­dus der Funk­tio­nen aus der Sprache M, welche speziell für Pow­er Query geschaf­fen wurde. Die als zweites Argu­ment angegebene Null (0) ist der Wert, der als Start-Off­set genutzt wird. Im Klar­text: Wie viele Schritte sollen beim Start über­sprun­gen wer­den? Das macht diese etwas aufwändi­gere Formel aber auch flex­i­bler. Und bei dieser Gele­gen­heit der Hin­weis, dass die Doku­men­ta­tion der Funk­tio­nen meis­tens recht gut ist; allerd­ings nur in good old eng­lish. 🙄 

Die restlichen Schritte sind erst ein­mal, wie gehabt:

  • Die Spalte Liste erweit­ern
  • Tabelle1 auswählen
  • Start | Kom­binieren | Abfra­gen zusam­men­führen
  • Tabelle1 (2) als zweite Tabelle auswählen
  • Wun­dern …
Warum ist keine Vorschau verfügbar?

Warum ist keine Vorschau ver­füg­bar?

Im unteren Kas­ten wird nichts angezeigt und damit ist natür­lich auch keine Verknüp­fung zweier Tabellen möglich. Der Grund dafür ist, dass die kopierte Query ein Ver­weis und kein Dup­likat ist. Der Preis der Flex­i­bil­ität … 🙁

Aber es gibt (natür­lich) den­noch eine Lösung des Prob­lems. Schließen Sie erst ein­mal den Dia­log per Abbrechen.  Jet­zt wiederum im Menüband Kom­binieren | Abfra­gen zusam­men­führen erweit­ern und Abfra­gen als neue Abfrage zusam­men­führen. Wie auch im ersten Beispiel Tabelle1 (2) als zu ver­Link­ende Query hinzufü­gen und schon haben Sie wieder das erwartete Bild auf dem Schirm. 🙂

Wiederum die bei­den Spal­ten Index markieren und diesen Dia­log durch Klick auf OK schließen. Im Edi­tor die let­zte Spalte Tabelle1 (2) Doppelpfeil durch Klick auf den Dop­pelpfeil erweit­ern. Und auch hier bietet es sich an, das Feld Liste als einzi­gen Ein­trag beste­hen, ange­hakt zu lassen (es kann prinzip­iell aber auch jedes beliebige andere Feld sein, aber sehen Sie selb­st…).

So weit, so gut. Erst ein­mal, denn Sie wer­den sich vielle­icht fra­gen, warum in der Spalte S/N wiederum durchgängig TRUE drin ste­ht, obwohl Sie vor weni­gen Minuten doch diesen Wahrheitswert durch null erset­zt haben. Nun ja, Sie haben die Erset­zung in der Abfrage Tabelle1 (2) vorgenom­men, was Sie hier sehen, ist die erweit­erte Abfrage Tabelle1. Klick­en Sie im recht­en Seit­en­fen­ster in der Zeile Erweit­erte Tabelle1 (2) auf das Zah­n­rad-Sym­bol (rechts) und es öffnet sich wiederum der Dia­log, wo sie die anzuzeigen­den Felder beim erweit­ern auswerten kön­nen. Löschen Sie hier das Häkchen bei Liste und set­zen Sie einen Hak­en bei S/N. Jet­zt OK und die let­zte Spalte stellt sich etwas anders dar:

So soll sich die Seriennummer darstellen…

So soll sich die Seri­en­num­mer darstellen…

Da in ein­er Tabelle (und nichts anderes ist auch diese Abfrage) keine 2 Spal­ten den iden­tis­chen Namen/Überschrift haben dür­fen, hat Pow­er Query automa­tisch den Zusatz .1 an den ursprünglichen Spal­tenna­men ange­fügt. Ide­al­er­weise löschen Sie nun die 2. Spalte S/N, ver­schieben die let­zte Spalte mit der Maus auf die 2. Posi­tion und ändern die Über­schrift wieder auf S/N. Im let­zten Schritt Löschen Sie die Spalte Index, sie wird nicht mehr benötigt. Schließen & laden und Abfrage wird als nor­maler Excel-Tabelle in ein neues Tabel­len­blatt geschrieben.


Es gibt noch weit­ere Möglichkeit­en, solch eine Liste zu erweit­ern. Für den Nor­mal­ge­brauch reichen diese bei­den Möglichkeit­en jedoch vol­lkom­men aus und ich möchte es auch dabei belassen; schließlich ist dieser Beitrag für Ein­steiger in Sachen Pow­er Query gedacht.

▲ nach oben …

Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 3,00  freuen …

Dieser Beitrag wurde unter Allgemein, Verschiedenes, Join-Art, Power Query, PQ-Formeln (Sprache M), Tabelle und Zelle, {Liste} abgelegt und mit , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.