PQ: Zahlengruppen (durch Punkt getrennt) generieren

  Wis­sens­stand: Lev­el 2 ⇒ Solides Basiswis­sen in Excel, etwas Erfahrung in PQ   

Die Aufgabe

In einem Forum wurde die Frage gestellt, wie eine fort­laufende Zahlen­rei­he gener­iert wer­den kann, welche aus fünf einzel­nen Blöck­en beste­ht und mit Aus­nahme des ersten Blocks stets zu ein­er definierten Anzahl hoch gezählt wer­den soll:

Die Num­merierung – Gren­zen der Blöcke

Das Grund­muster und somit auch der erste Ein­trag stellt sich so dar: 1.1.1.1.1 und geht entsprechend bis zum Wert 1.65.4.10.8 in der let­zten Zeile. Im Forum wurde (bis zum Zeit­punkt der Erstel­lung dieses Beitrags) nur eine VBA-Lösung ange­boten. Ich habe die Lösung mit Pow­er Query erstellt, da in manchen Unternehmen VBA (aus gutem Grund) nicht ges­tat­tet bzw. auch nicht möglich ist und mich diese Auf­gabe auch gereizt hat. Außer­dem ist es eine schöne Übung für alle User, die ein wenig tiefer in die Materie des PQ ein­steigen möcht­en. 😎 

▲ nach oben …

Lösungsmöglichkeiten

Ich stelle hier ganz bewusst für den Ein­stieg in den Lösungsweg zwei unter­schiedliche Lösungsmöglichkeit­en vor. Die erste ist er etwas für Spezies/Tüftler, hier wird auss­chließlich mit Pow­er Query gear­beit­et, ohne dass eine Excel-Tabelle mit einem Startwert existiert bzw. genutzt wird. Zugegeben, das ist etwas puris­tisch aber aus mein­er Sicht recht inter­es­sant. Direkt zu meinem Lösungsansatz geht’s hier: Klick

Deut­lich ein­fach­er und auch gewiss prax­is­näher ist der Ein­stieg, wo in ein Excel-Arbeits­blatt  beispiel­sweise in Zelle A1 der Startwert der ersten Gruppe geschrieben wird, also (nur) die 1. Diese Zelle wird dann für den Import in den Pow­er Query-Edi­tor ver­wen­det und die weit­eren Werte wer­den ergänzt bzw. berech­net. Klick­en Sie hier, um direkt zu diesem Ein­stieg zu gelan­gen.

▲ nach oben …

Ganz ohne Excel-Tabelle starten

Ich schlage vor, Sie erstellen eine neue, leere Excel-Arbeitsmappe. Derzeit befind­en sie sich im Arbeits­blatt Tabelle1 und die Zelle A1 ist aktuell. Diese Vorge­hensweise ist vielle­icht etwas gewöh­nungs­bedürftig und gewiss auch mit mehr Umstand ver­bun­den als der später beschriebene klas­sis­che Ablauf, aber vielle­icht kön­nen Sie diesen Weg auch ein­mal bei ein­er anderen Gele­gen­heit beschre­it­en.

  • Wech­seln Sie zum Reg­is­ter Dat­en
  • Klick­en Sie auf das Sym­bol Dat­en abrufen und wählen Sie im Kon­textmenü Pow­er Query-Edi­tor starten… 
  • Die meis­ten Menüpunk­te sind aus­ge­graut und kön­nen deshalb nicht gewählt wer­den. In der Gruppe Neue Abfrage wählen Sie Neue Quelle | Andere Quellen | Leere Abfrage:

Der Weg zu ein­er neuen Abfrage…

  • Tra­gen Sie in die kom­plett Leere Abfrage (Abfrage1) in die Eingabezeile die Zif­fer 1 ein, denn die gesamte Spalte soll ja mit dieser Zahl begin­nen:

In die Eingabezeile kommt nur die Zahl 1

  • … Und bestäti­gen Sie mit der Taste Enter (Return, Zeilen­schal­tung). Der Edi­tor stellt sich nun so dar:

Das Ergeb­nis ist eine Liste, keine Tabelle

Bei der Gele­gen­heit: Die Zeile unter den Grup­pen­beze­ich­nun­gen mit den zwei Sym­bol­en ist eine von mir angelegte und genutzte Möglichkeit mit Schnel­lzu­grif­f­en.

  • Sie Klick­en auf das Sym­bol Zu Tabelle und das Bild wird sich Ihnen gewiss etwas ver­trauter darstellen:

So wer­den Sie eine typ­is­che Abfrage ken­nen…

Damit ist die Basis geschaf­fen. Sie kön­nen die erste (und noch einzige) Spalte gerne nach Ihrem Geschmack umbe­nen­nen, aber das wäre nur der Optik wegen. In den weit­eren Schrit­ten wird dort zwar Bezug darauf genom­men aber im let­zten Schritt wer­den Sie sowieso eine Ihnen genehme Über­schrift Fes­tle­gung gener­ieren.

Die näch­sten und zielführen­den Schritte sind weit­er unten nach der Beschrei­bung des Stan­dard-Ein­stiegs beschrieben und unter­schei­den sich nicht.

▲ nach oben …

Standard: Excel-Tabelle für den Import

Wie weit­er oben schon erwäh­nt wer­den sie ver­mut­lich die erste Spalte der Abfrage in einem Excel-Arbeits­blatt erstellen. Dazu tra­gen Sie in A1 die Zif­fer 1 ein und for­matieren Sie diese Zelle auf beliebigem Wege zu ein­er „Intel­li­gen­ten” Tabelle. Ich mache das meis­tens per StrgT oder StrgL. Über Dat­en | Aus Tabelle/Bereich importieren Sie diese Liste in den Pow­er Query-Edi­tor. Sie haben jet­zt den gle­ichen Stand wie in der zuvor dargestell­ten Übung; eine Abfrage mit 1 Spalte und 1 Zeile. In der deutschen Excel Ver­sion wird der einzige Unter­schied sein, dass die Über­schrift hier Spalte1  ist und nicht Column1 wie bei der vorheri­gen Vorge­hensweise.

▲ nach oben …

Die 5 Gruppen generieren

Sie haben gewiss noch die Auf­gabe im „Hin­terkopf”: Es sollen unge­fähr 20.000 Zahlen­grup­pen gener­iert wer­den, die mit 1.1.1.1.1 begin­nen und mit 1.65.4.10.8 enden. Da diese Zahlen­folge ja wegen der mehrfachen Punk­te in jedem Fall ein String (eine Zeichen­folge) ist, kann wed­er Excel noch Pow­er Query ohne Umwege und „Klim­mzüge” jew­eils an passender Stelle den Wert 1 addieren. Der ein­fach­ste und auch aus mein­er Sicht einzig sin­nvolle Weg ist, jede Gruppe erst ein­mal in ein­er einzel­nen Spalte darzustellen, dort das Hochzählen der Werte vorzunehmen und später die Dat­en mit den jew­eils tren­nen­den Punk­ten zusam­men­zufü­gen.

Gruppe 1 (erste Spalte)

Es ist fest­gelegt, dass jed­er der gener­ierten Werte in der ersten Gruppe mit 1 begin­nt. Da ist es logisch, dass diese Spalte nicht hochgezählt wer­den soll bzw. darf. Fol­glich bleibt diese Spalte so wie sie ist. Auch wenn das Endresul­tat aus mehreren Grup­pen beste­ht wäre es nicht zweck­mäßig, diese erste Spalte direkt so zu verän­dern, dass das Endresul­tat irgend­wann nach ca. 20.000 Zeilen erre­icht ist. Belassen Sie es bei dieser 1 Zeile, den Rest erledigt Pow­er Query für Sie. 😉 Es ist wesentlich prag­ma­tis­ch­er und im End­ef­fekt schneller, jede dieser fünf Grup­pen in ein­er einzel­nen Spalte zu gener­ieren und im let­zten Schritt die einzel­nen Spal­ten jew­eils durch einen Punkt separi­ert zusam­men zu führen.

Gruppe 2 (zweite Spalte)

Es ist ja vorgegeben, dass die 2. Spalte (sprich die zweite Gruppe) die fort­laufend­en Zif­fern 1 bis 65 enthält. Auch wenn Sie son­st in Pow­er Query sehr viel per Mausklick erledi­gen kön­nen, hier ist eine Formel gefragt. Wech­seln Sie also zum Reg­is­ter Spalte hinzufü­gen und Klick­en Sie dort auf Benutzerdefinierte Spalte. Im Dia­log wählen/schreiben Sie als Neuer Spal­tenname (Über­schrift) beispiel­sweise Spalte2 oder auch nur die 2 und tra­gen Sie als Benutzerdefinierte Spal­tenformel exakt diesen Wert ein: {1..65} (das sind die geschweiften Klam­mern)

Der Dia­log für die Formel-Eingabe

… und bestäti­gen Sie mit OK. Danach sieht der Pow­er Query-Edi­tor zwar immer noch etwas spar­tanisch aus, aber es ist okay so:

Der Wert „List” ist hier abso­lut kor­rekt

Ver­fahren Sie mit den Gruppen/Spalten 3 bis 5 gle­icher­maßen. Natür­lich wer­den sie die Über­schriften und die Werte in den geschweiften Klam­mern entsprechend anpassen, also Spalte3 | {1..4}, Spalte4 | {1..10} und Spalte5 | {1..8}.

Nacheinan­der erweit­ern Sie nun die Über­schriften Spalte2 bis Spalte5 durch einen Klick auf den Dop­pelpfeil Doppelpfeil rechts in der Über­schrift, Auf neue Zeilen ausweit­en und Sie erken­nen, dass umge­hend sehr viele neue Zeilen ent­standen sind. 💡 

Im let­zten Schritt müssen die 5 sep­a­rat­en Spal­ten natür­lich zu ein­er einzi­gen Spalte zusam­menge­fügt wer­den, wo jede Gruppe durch einen Punkt von der fol­gen­den getren­nt wird. Dazu Klick­en Sie als erstes in die Über­schrift Spalte1, Shift und dann in Spalte5. Alle Spal­ten sind nun markiert. Wech­seln Sie zum Menü Trans­formieren und wählen Sie in der Gruppe Textspalte  Spal­ten zusam­men­führen. Im Dia­log wählen Sie bei Trennze­ichen zuerst –Benutzerdefiniert– und fügen dann in das leere Textfeld einen Punkt . ein. Als Neuer Spal­tenname tra­gen Sie das ein, was als Über­schrift kün­ftig der kom­plet­ten Liste ste­hen soll, beispiel­sweise Waren­gruppe oder einen anderen passenden Text.

Über den Menüpunkt Datei | Schließen & laden oder Schließen & laden in… die Abfrage schließen und die über 20.000 Zeilen wer­den in ein neues Tabel­len­blatt oder an gewün­schter Posi­tion in ein Arbeits­blatt geschrieben. Damit ist die Auf­gabe erfüllt.

▲ nach oben …

Epilog

Soll­ten Sie bei den Grup­pen­num­mern welche in den Spalten/Grupen zwei und vier ein- und zweis­tel­lig sein kön­nen bei den Zahlen 1–9 wegen beispiel­sweise besser­er Sortier­möglichkeit eine führende Null ver­wen­den wollen, so ist auch dieses mit Pow­er Query dur­chaus mach­bar. Mit ein wenig tüfteln wer­den Sie vielle­icht die Lösung find­en. Sie kön­nen mich aber auch gerne anschreiben und gegen eine Spende von 2,00 Euro erstellt ich Ihnen die passende Lösung.

▲ nach oben …

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

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

Dieser Beitrag wurde unter Allgemein, Verschiedenes, Daten zusammenführen, Foren-Q&A, Power Query, Spalten bearbeiten, Text-Behandlung, {Liste} abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.