PQQ: Führende oder angehängte Nullen (oder beliebige Zeichen)

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

PQQ: Führende oder angefügte Nullen, Asterisk (**) oder fast beliebige Sonderzeichen

In manchen Fällen ist es erforder­lich, eingegebene Zahlen­werte so zu verän­dern, dass beispiel­sweise eine vorgegebene Anzahl von Zeichen vor oder nach einem Dez­i­mal­tren­ner erre­icht wird. In den meis­ten Fällen wer­den dieses führende (vor­angestellte) Nullen oder Sterne (*) sein, gle­ich­es gilt natür­lich auch für andere ange­hängte Zeichen jeglich­er Art.

Wie so oft im Excel-Leben führen mehrere Wege zum Ziel. Für jeden der Fälle gilt, dass das Ergeb­nis im For­mat Text sein wird und auch die entsprechen­den Fül­lze­ichen tat­säch­lich erzeugt wer­den müssen und diese nicht durch ein entsprechen­des Zahlen­for­mat nur für die Darstel­lung gener­iert wer­den. Anhand des Zahlen­beispiels 123,45 zeige ich Ihnen unter­schiedliche Wege auf, das Ziel zu erre­ichen. Die Vor­gabe ist, dass der Teil vor dem Kom­ma stets 5 Zeichen umfasst und immer 3 Stellen/Positionen nach dem Kom­ma sein müssen. Und aus­nahm­sweise in diesem Pow­er Query-Beitrag zu begin­nen eine (mögliche) Lösung in Plain Excel. 😉

▲ nach oben …

Plain Excel

Ich kön­nte Ihnen jet­zt eine der vie­len möglichen Formeln hier hin­schreiben und sie dann ihrem Schick­sal über­lassen. Aber das kann nicht der Sinn meines Forums sein. Darum werde ich in mehreren kleinen Schrit­ten aufzeigen, wie auch Sie zu solch ein­er Lösung, zu solch ein­er Formel kom­men kön­nen. Wie gesagt, Schritt für Schritt. Und nur die endgültige Formel ist genau jenes Ergeb­nis, welch­es sie für sich ver­wen­den soll­ten.

In A1 ste­ht der bere­its oben vorgegebene Wert 123,45. Diese Zahlen­folge soll nun nach Vor­gabe mit Ster­nen aufge­füllt wer­den. Schritt 1: Schreiben Sie in B1 diese Formel:
="****" & GANZZAHL(A1)
und als Ergeb­nis sehen Sie ****123. Die Vor­gabe war ja ein wenig anders, näm­lich dass vor dem Kom­ma genau 5 Stellen angezeigt wer­den sollen. Verän­dern Sie die Formeln nun so, dass von rechts aus gese­hen nur 5 Stellen übrig bleiben:
=RECHTS("****" & GANZZAHL(A1); 5)

Schritt 2: Damit ist der Vorkom­ma-Anteil kor­rekt. Ergänzen Sie diese Formel nun so, dass dem Ergeb­nis noch ein Kom­ma einge­fügt wird:
=RECHTS("****" & GANZZAHL(A1); 5) & ","
Als Ein­steiger soll­ten Sie jet­zt ein kleines Inter­mez­zo ein­le­gen und in ein­er beliebi­gen freien Zelle per Formel berech­nen, an welch­er Posi­tion das Kom­ma in der Zelle A1 ste­ht. Dazu bietet sich diese Formel an: =FINDEN(","; A1) was natür­lich zum kor­rek­ten Ergeb­nis 4 führt.

Im näch­sten Zwis­chen­schritt (Schritt 3) wer­den Sie die Formel in B1 dahinge­hend verän­dern, dass bis zu 3 Zif­fern nach dem Kom­ma aus dem Wert in A1 über­nom­men wer­den. Im allerersten Schritt kön­nen Sie dazu das eben erwor­bene Wis­sen nutzen, dass das Kom­ma ja an der 4. Posi­tion ste­ht, die auszuw­er­tenden Zif­fern also an der 5. Stelle begin­nen. Ergänzen Sie die Formel in B1 nun fol­gen­der­maßen:
=RECHTS("****" & GANZZAHL(A1); 5) & "," & TEIL(A1; 4+1; 3)
und das Ergeb­nis wird kor­rekt sein. Das ist aber nur der Fall, weil das Kom­ma wirk­lich an der 4. Stelle ste­ht. Läge die Aus­gangszahl im Zehn­er- oder Tausender Bere­ich, dann wäre die Posi­tion des Komas naturgemäß eine andere. Darum wer­den sie jet­zt in Schritt 4 die per Hand einge­tra­gene 4 in der Formel durch jene Funk­tion erset­zen, die sie vorher zur Berech­nung der Posi­tion ver­wen­det haben. Die fast fer­tige Formel sieht nun fol­gen­der­maßen aus:
RECHTS("****" & GANZZAHL(A1); 5) & "," & TEIL(A1; FINDEN(","; A1)+1; 3)

Bleibt nur noch der Schritt 5, wo an den Nachkom­ma-Teil ein oder mehrere Sterne ange­fügt wer­den müssen. Dazu beant­worten Sie erst ein­mal die Frage, aus exakt wie viel Zeichen der endgültige String beste­hen wird: Es sind natür­lich 9 Zeichen. Also wer­den sie nun noch die Zeichen­folge *** anhän­gen und von diesem String die linken 9 Zeichen „abschnei­den”:
=LINKS(RECHTS("****" & GANZZAHL(A1); 5) & "," & TEIL(A1; FINDEN(","; A1)+1; 3) & "***";9)

Ich muss geste­hen, dass ich mir so etwas ein­fach nicht mehr antun mag. Aber für Formel-Lieb­haber ist das vielfach der ein­fach­er zu hand­habende Weg. Und zugegeben, Formel-affine User wer­den das Ganze auch noch in „ele­gan­ter” lösen kön­nen und über dieses Kon­strukt nur müde lächeln. Mir ging es hier darum, dass Sie auf der einen Seite die Vielfalt des Excel sehen und sich ander­er­seits auch entschei­den kön­nen, welchen Weg Sie gehen wollen. Und natür­lich funk­tion­iert das alles nur, wenn die Aus­gangs-Zahl auch wirk­lich ein Kom­ma enthält…

Hierüber habe ich die Vorge­hensweise beschrieben, die Zahlen­folge mit Sternchen (oder andere Zeichen) aufzufüllen. Obwohl es sich bei führen­den oder ange­hängten Nullen nicht direkt um Zeichen son­dern Zahlen han­delt, wer­den Sie die drei Nullen auch in Anführungsstriche set­zen, um dadurch eine Wand­lung zu einem String zu erre­ichen.

▲ nach oben …

Power Query (1)

Ein sehr stark an die eben gezeigten Lösung angelehnt der Weg ist auch mit Pow­er Query bege­hbar. Auch hier ist es natür­lich wieder die Zahl 123,45, welche mit Nullen oder Ster­nen aufge­füllt wer­den soll. Ich werde hier so weit wie möglich auf Formeln verzicht­en, dafür lieber den einen oder anderen Schritt mehr durch­führen lassen.

Sie begin­nen wie üblich damit, die Zelle A1 in den Pow­er Query-Edi­tor zu importieren. Zu Beginn gehen Sie über Start | Spalte teilen | Nach Trennze­ichen und akzep­tieren den vorgeschla­ge­nen Wert Kom­ma. Bestäti­gen Sie mit OK und die Zahl ist in 2 Spal­ten aufgeteilt: Spalte1.1 enthält den Vorkom­ma-Teil 123 und in Spalte1.2 ste­ht der Nachkom­ma-Teil, also die 45.

Was jet­zt noch fehlt sind die entsprechen­den Fül­lze­ichen. Ich ver­wende hier wiederum die Sterne. Dazu wech­seln Sie zum Reg­is­ter Spalte hinzufü­gen und Klick­en dann auf Benutzerdefinierte Spalte. Im neu erschiene­nen Dia­log tra­gen Sie bei Neuer Spal­tenname den Text Sternchen ein und im großen Textfeld darunter bei Benutzerdefinierte Spal­tenformel nach dem vorhan­de­nen = den Text „***”:

Die Formel für die Benutzerdefinierte Spalte

Die Formel für die Benutzerdefinierte Spalte

PQ wird eine neue Spalte mit der Über­schrift Sternchen und dem Inhalt *** erzeu­gen. Bleiben Sie im Menü-Reg­is­ter Spalte hinzufü­gen und markieren Sie die Über­schrift Sternchen durch einen Mausklick. Anschließend Strg und ein Klick in Spalte1.1. Die Rei­hen­folge ist wichtig, denn die wird sich Pow­er Query merken, wenn Sie nun auf Spal­ten zusam­men­führen Klick­en. Belassen Sie es dabei, dass kein Trennze­ichen ver­wen­det wird und bei Neuer Spal­tenname (option­al) geben Sie Ganz­zahl ein. Ihr Edi­tor wird sich anschließend so darstellen:

Die Abfrage mit den bei­den neuen Spal­ten

Wech­seln Sie zum Reg­is­ter Trans­formieren und markieren Sie die Über­schrift Zusam­menge­führt. In der Gruppe Textspalte erweit­ern Sie den Punkt Extrahieren | Let­zte Zeichen und geben Sie im Dia­log bei Anzahl eine 5 ein, danach per OK schließen. Und voila, das stimmt schon ein­mal. 😎 

Die prak­tisch gle­iche Vorge­hensweise wer­den sie nun für die Zahlen nach dem Kom­ma anwen­den. Klick­en Sie dieses Mal der anderen Rei­hen­folge wegen zuerst auf Spalte1.2, anschließend Strg oder Shift und Sternchen. Spalte hinzufü­gen | Spal­ten zusam­men­führen und der neue Spal­tenname soll Nachkom­ma sein. Nachkom­ma markieren, Trans­formieren | Extrahieren | Erste Zeichen | 3 und auch hier ist die Wun­sch-Zeichen­folge gegeben.

Immer noch im Reg­is­ter Trans­formieren markieren Sie Ganz­zahl und Nachkom­ma, Spal­ten zusam­men­führen, bei Trennze­ichen wählen Sie Kom­ma und als neuen Spal­tenna­men kön­nten Sie beispiel­sweise Aufge­füllt ver­wen­den. Damit ist die Auf­gabe mit nur ein­er einzi­gen kleinen und dur­chaus trans­par­enten Formel gelöst. Falls Sie statt der Sterne beispiel­sweise eine führende/anhängende Null ver­wen­den wollen, gilt fol­gen­des: Der Daten­typ muss natür­lich Text bleiben, denn son­st wür­den ja die führen­den bzw. ange­hängten Nullen automa­tisch eli­m­iniert wer­den. Und die statt der Sternchen in der Formel ver­wen­de­ten Nullen müssen natür­lich auch in „Gänse­füßchen” ste­hen. Jet­zt noch alle Spal­ten außer der let­zten löschen, Schließen & laden in…, Beste­hen­des Arbeits­blatt auswählen, die Ziel-Zelle fes­tle­gen und mit OK bestäti­gen.

▲ nach oben …

Power Query (2)

Das Beste kommt ja bekan­ntlich immer zum Schluss. So ist auch die jet­zt von mir vorgestellte PQ-Lösung aus mein­er Sicht die pro­fes­sionellere. In ein­er neuen Abfrage eben­falls die Zelle A1 oder den Bere­ich Tabelle1 ein­le­sen, falls das gle­iche Arbeits­blatt ver­wen­det wird und dort naturgemäß die umzuwan­deln der Zahl bere­its in ein­er Intel­li­gen­ten Tabelle ste­ht.

Zuerst wer­den Sie die Zelle wiederum teilen und als Kri­teri­um das Kom­ma ver­wen­den. Wie gehabt existieren nun die bei­den Spal­ten Spalte1.1 und Spalte1.2. Pow­er Query hat aber den Typ der bei­den nun als einzeln ste­hende Zahlen auch als Zahl erkan­nt und umge­wan­delt. Sie erken­nen das ganz klar im recht­en Seit­en­fen­ster, hier zeige ich mit der Maus darauf:

Automa­tisch geän­dert­er Typ der Dat­en

Für die nun fol­gen­den Schritte ist genau das aber gar nicht vorteil­haft, es wird jew­eils der Daten­typ Text für die Oper­a­tio­nen erwartet. Darum zeigen Sie auf das kleine Kreuz links des Text-Ein­trages im recht­en Seit­en­fen­ster und löschen Sie diesen Schritt durch einen Klick auf das rote Kreuzchen. Markieren Sie nun die erste Spalte mit der Ganz­zahl, Spalte hinzufü­gen | Benutzerdefinierte Spalte und geben Sie bei Neuer Spal­tenname Ganz­zahl ein. Bei Benutzerdefinierte Spal­tenformel tra­gen Sie nach dem vorgegebe­nen Gle­ich­heit­sze­ichen diese Formel ein:
= Text.PadStart([Spalte1.1], 5, "*")

Wie in der Sprache M üblich ist es wichtig, dass sie exakt diese Groß- Klein­schrei­bung ver­wen­den. Den Namen Spalte1.1 in den eck­i­gen Klam­mern kön­nen Sie ein­fach übernehmen, indem sie im recht­en Seit­en­fen­ster Ver­füg­bare Spal­ten einen Dop­pelk­lick auf den entsprechen­den Spal­tenna­men durch­führen.

Der gle­ichen Logik fol­gend wer­den sie nun eine weit­ere Spalte für den Nachkom­ma-Teil durch­führen. Die Formel in der Benutzerdefinierten Spalte zitiert fol­gen­der­maßen aus:
= Text.PadEnd([Spalte1.2], 3, "*")

Wenn Sie nun die bei­den eben erzeugten Spal­ten über Trans­formieren | Spal­ten zusam­men­führen | Trennze­ichen: Kom­ma mit dem Neuen Spal­tenna­men Aufge­füllt gener­ieren, haben Sie mit weni­gen Schrit­ten und auch dur­chaus über­schaubaren Formeln das Ergeb­nis erzielt. Die ersten bei­den Spal­ten kön­nen natür­lich gelöscht und das Ergeb­nis an ihre Wun­sch­po­si­tion per Schließen & laden in… gespe­ichert wer­den.

▲ nach oben …

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

Dann würde ich mich über einen Beitrag Ihrer­seits freuen …

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.