ꜛ Tabellenspalten in Power Query sortieren (3)

Xtract: In Pow­er Query ist das Sortieren von Spal­ten so ähn­lich wie bei ein­er Intel­li­gen­ten Excel-Tabelle. Einige Beson­der­heit­en erle­ichtern gewiss das Leben viel­er Anwen­der… Teil 2: Leere Zellen ans Ende sortieren.

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

Sonderfall leere Zellen

Wenn in ein­er Spalte leere Zellen enthal­ten sind stellt sich immer wieder die Frage, wie die beim sortieren behan­delt wer­den sollen.  Für diese und die nach­fol­gende Übung laden Sie bitte dieses File herunter. In ersten Arbeits­baltt sind in Spal­ten A:B und Spal­ten D:E unter­schiedliche Tiere und deren Hal­ter angegeben. Da manche Hal­ter ger­ade kein Tier haben, ist dort die Zelle leer (oder sieht leer aus).

Die bei­den Tabellen scheinen sich auf den ersten Blick nicht zu unter­schei­den, dazu aber gle­ich mehr… Importieren Sie erst ein­mal die erste (die linke) Tabelle (Tabelle1) in den Pow­er Query-Edi­tor:

Fällt Ihnen etwas auf?

Es ist offen­sichtlich, dass Spalte_B bere­its ohne Ihr Zutun auf­steigend sortiert ist. Und in Spalte_A sind einige Zellen leer, was ja auch hierüber schon beschrieben ist. Ihr Wun­sch sei es nun, dass Spalte_A auf­steigend sortiert wird. Und da in dieser Abfrage ja noch keine aktive Sortierung vor­liegt, genügt ein Klick in das Erweit­ern-Sym­bol dieser Spalte und dann Auf­steigend sortieren. – Aha…

Die leeren zuerst, na ja…

Prinzip­iell und aus der Sicht der IT ist das auch kor­rekt so. Ein oft geäußert­er Wun­sch ist aber, dass die leeren Zellen nicht dom­i­nant am Anfang der Auf­stel­lung ste­hen son­dern am Ende, hier also nach den Haustieren. Ein­fach nur absteigend sortieren wird nicht zum Erfolg führen; dann sind zwar die Haustiere in den ersten Zeilen, aber die Rei­hen­folge wäre dann natür­lich Schwein bis Esel, also auch absteigend. Das fällt also schon ein­mal flach. 😥 

Ich gehe da einen steini­gen, dafür aber nachvol­lziehbaren und vor allen Din­gen kon­se­quenten Weg. Ich erstelle erst ein­mal 2 Kopi­en dieser Abfrage. Dazu öffne ich falls erforder­lich das linke Seit­en­fen­ster¿ und nach einem Recht­sklick auf Tabelle1 wäh­le ich Duplizieren und dann noch ein­mal Tabelle1 | Duplizieren.

Die Zeile Tabelle1 (3) ist ja in der Auflis­tung der Abfra­gen noch markiert; also F2, um diesen Ein­trag umzuben­nen. Ich vergebe den Namen leere und bestätige ein­fach mit Return (Eingabe, Zeilen­schal­tung). Danach beispiel­sweise Recht­sklick in Tabelle1 (2) und Umbennnen, um auch dieser Abfrage einen anderen Namen zu geben; ich wäh­le Tiere als neuen Namen.

Immer noch in der Abfrage Tiere erweit­ere ich die Über­schrift Spalte_A. Und spätestens jet­zt wird Ihnen auf­fall­en, dass neben den Tier­na­men zwei unter­schiedliche Typen Leer­erzellen existieren:

Nach dem erweit­ern der Spalte_A

Ganz oben sind die Ein­träge NULL und (leer), darunter die Namen der Tiere. Der Wert NULL bedeutet ja, dass die Zelle leer ist. Und (leer) heißt eben­falls, dass die Zelle leer ist. Wo der Unter­schied liegt, soll an dieser Stelle nicht disku­tiert wer­den. Nur so viel: NULL ist wirk­lich leer, (leer) enthält meist einen String, einen Text der Länge 0 (entspricht ""), welch­er oft durch eine Formel in Excel erzeugt wird. – Ent­fer­nen Sie nun erst ein­mal das Häkchen bei diesen bei­den Ein­trä­gen und nach einem Klick auf OK wer­den sie erken­nen, dass in der Abfrage auss­chließlich die Namen der Tiere aufge­führt sind. Die vorhan­dene Sortierung wurde selb­stver­ständlich über­nom­men; diese sollte aber auf­steigend sein, darum ein Klick auf das Erweit­en-Sym­bol (mit dem großen Fil­ter-Sym­bol) und dann Klick­en Sie auf  Auf­steigend sortieren.

Wech­seln Sie nun zur Abfrage leere, indem sie im linken Seit­en­fen­ster auf diesen Ein­trag Klick­en. Hier sollen auss­chließlich die leeren Zeilen erhal­ten bleiben, darum nach dem erweit­ern erst ein­mal ein Klick auf (Alles auswählen) und anschließend markieren Sie die bei­den Zeilen (NULL)  und (leer). OK und machen Sie sich bewusst, dass Sie neben der ursprünglichen Abfrage noch 2 ges­plit­tete Abfra­gen mit und ohne Ein­trä­gen in der ersten Spalte haben. 💡 

Wech­seln Sie nun wiederum zur Abfrage Tiere. Im Menü Start Klick­en Sie nun auf Kom­binieren | Abfra­gen Anfü­gen ▼ (erweit­ern) | Abfra­gen als neu anfü­gen. Füllen Sie den Dia­log so aus wie in der fol­gen­den Abbil­dung gezeigt (leere anklick­en):

Der Dia­log zum anhän­gen von Abfra­gen

Es sollen jet­zt zwei Tabellen zusam­menge­fügt wer­den, die Primäre Tabelle ist Tiere und daran (darunter) soll die Tabelle (Abfrage) leer ste­hen. Kon­trol­lieren, bestäti­gen und der Erfolg ist wie gewün­scht gegeben:

Die bei­den Abfra­gen, zusam­menge­fügt

Auch wenn die let­zten 4 Zellen in Spalte_A hier in der Query nicht iden­tisch sind, im Endergeb­nis, im Arbeits­blatt sehen die gle­ich aus. Damit ist auch dieser erste Teil der Son­der-Auf­gabe erledigt. Nutzen Sie die Gele­gen­heit, dieses Ergeb­nis erst ein­mal zu sich­ern. Je nach Geschmack wählen Sie Schließen & laden oder Schließen & laden in…¿, um sich gle­ich um die Tabelle2 zu küm­mern.

▲ nach oben …

Die zweite Tabelle

In dem Excel Arbeits­blatt unter­schei­den sich die bei­den Tabellen der Spal­ten A:B und Spal­ten D:E nicht. Zumin­d­est nicht in der Ansicht im eigentlichen Arbeits­bere­ich. Wenn Sie aber ein­mal in D6 und/oder D11 Klick­en wer­den Sie in der Edi­tierzeile (Eingabezeile) erken­nen, dass hier im Gegen­satz zur linken Tabelle Formeln enthal­ten sind. Son­st ist alles gle­ich, auch das erwün­schte Ergeb­nis, dass nach Haustieren auf­steigend sortiert wird und die leeren Zellen unten ste­hen. Nur der Weg zum Ziel ist ein ander­er.

Meine Empfehlung zur besseren Über­sicht bzw. Trans­parenz: Schließen Sie die eben erstellte Mappe, spe­ich­ern Sie diese unter einem beliebi­gen (anderen) Namen und rufen Sie die ursprüngliche Mappe wieder auf. Importieren Sie dann den Bere­ich D1:E12 in den Pow­er Query-Edi­tor. Nor­maler­weise wird der Name der Abfrage Tabelle2 sein, weil dieser dem des Tabel­len­na­mens entspricht.

Um zum gewün­scht­en Ergeb­nis zu kom­men gehe ich hier einen anderen, vielle­icht ungewöhn­lichen Weg. Er ist auch wie in der ersten Lösung mit Umwe­gen ver­bun­den, aber es bleibt bei ein­er einzi­gen Abfrage. Und an dieser Stelle gle­ich ein Hin­weis: Das funk­tion­iert nur, wenn das erste Zeichen jed­er Zelle in Spalte_D (also die Tiere) inner­halb des lateinis­chen Alpha­bets ange­siedelt ist. Also A bis Z und die Umlaute jew­eils in Groß- oder Klein­schrei­bung sowie das ß.

Sie wis­sen vielle­icht, dass der „nor­male” Zeichen­satz aus 256 Zeichen beste­ht, wobei jedes dieser Zeichen im Com­put­er mit ein­er Num­mer, ein­er Zahl ver­wal­tet wird. So hat das Leerze­ichen die 32, die Zif­fer 0 die 48 und das große A die 65. Und das let­zte darstell­bare Zeichen dieses Codes ist 255. Nicht 256, denn die Zäh­lung begin­nt (wie auch grund­sät­zlich in Pow­er Query) mit 0.

Aus­gerüstet mit diesem Wis­sen wer­den Sie nun dafür sor­gen, dass die leeren und leer erschein­den Zellen vorüberge­hend mit dem höch­st­möglichen Wert dieses Code-Bere­ichs gefüllt wer­den. Markieren Sie die Spalte mit den Tieren durch einen Klick in die Über­schrift, Recht­sklick in die Über­schrift und im Kon­textmenü Werte erset­zen. Für den ersten Durch­gang geben Sie bei Zu suchen­der Wert null (in Klein­buch­staben) ein und bei Erset­zen durch

Ja, wie schaf­fen Sie es, dieses Zeichen mit dem Wert 255 ÿ in das Feld zu brin­gen? Ich zeige Ihnen hier zwei gang­bare Wege auf, die bei­de zum Ziel führen; der­Schreibcur­sor blinkt im Feld für den kün­fti­gen Wert:

  1. Möglichkeit: Die wohl am meis­ten genutze Meth­ode: Drück­en Sie Alt und hal­ten Sie diese gedrückt. Auf dem Zehnerblock/Ziffernblock (rechts der Tas­tatur) nacheinan­der 0255, dann erst lassen Sie Alt los. Im Eingabe-Feld erscheint dann das Zeichen ÿ.
  2. Weg: Wenn Ihre Tas­tatur keinen Zif­fern­block hat (beispiel­sweise Note­book) oder Ihnen dieser Weg zu umständlich ist, dann geben Sie ein beliebiges Zeichen ein, welch­es Sie leicht wieder­erken­nen. Das kann beispiel­sweise die Raute # sein. Auch am Beispiel der wirk­lich leeren Zeile ist dann nicht mehr der Wert null sicht­bar; die Edi­tierzeile sieht nach der Bestä­ti­gung dann so aus:
    = Table.ReplaceValue(#"Ersetzter Wert",null,"#",Replacer.ReplaceValue,{"Spalte_D"})

    Löschen Sie dann in der Edi­tierzeile das Ersatz-Zeichen mit den Anführungsze­ichen (hierüber gelb markiert) und tra­gen Sie an der Stelle diese Funk­tion ein:
    Character.FromNumber(255)
    und anschließend beispiel­sweise auf das Häkchen im Bere­ich links der Eingabezeile oder ein­fach ein Klick in den freien Bere­ich neben der Abfrage.

Wieder­holen Sie den Vor­gang, nur dass Sie dies­mal das Feld Zu suchen­der Wert leer lassen (also auch kein Leerze­ichen). Anschließend sortieren Sie Spalte_D auf­steigend und erset­zen dann noch das Ersatzze­ichen ÿ durch null. Sie haben mit rel­a­tiv weni­gen Schrit­ten und in ein­er einzi­gen Abfrage Ihr Ziel erre­icht. 😎 

▲ 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,00  freuen …

Dieser Beitrag wurde unter b) Kaum Vorkenntnisse, Filtern & Sortieren, Power Query, PQ für Einsteiger, PQ-Basics abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.