Mehrspaltige / Mehrzeilige Zellen in Zeilen splitten

In jeweils einer Zelle (mehrspaltig)
durch [Alt] [Return] getrennte Werte in mehrere Zeilen splitten

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

In einem Forum wurde die anfangs recht ein­fach scheinende Anfrage gestellt, wie die in der Über­schrift dieses Beitrages beschriebe­nen Auf­gabe zu lösen sei. Bevor eine Muster-xlsx vom Fragesteller eingestellt wor­den ist, wur­den ver­schiedene Antworten auf der Basis VBA und ein Hin­weis auf Pow­er Query gegeben. Der Fragesteller hat sich let­z­tendlich für eine recht außergewöhn­liche Lösung entsch­ieden, wo die Dat­en erst nach Word trans­feriert wur­den und nach ein­er Bear­beitung zurück nach Excel importiert wor­den sind. Na ja, jedem das seine … 😯 

Ich habe mir vorgenom­men, dieses Prob­lem mit Pow­er Query zu lösen. Der einzig wirk­lich existierende „Stolper­stein” ist das Anführungsze­ichen, welch­es ja mehrfach als einzelne, logis­che „Zeile” inner­halb ein­er Zelle existiert. Selb­st wenn die entsprechende Spalte in Pow­er Query als Text aus­geze­ich­net wor­den ist, wird PQ diese Zeile „unter­schla­gen” und auch anson­sten nicht das tun, was erwartungs­gemäß sein sollte. Aber sehen Sie selb­st …

▲ nach oben …

Einstieg und Vorbereitung

Begin­nen Sie damit, diese Muster-xlsx (eine Kopie der Datei aus dem Forum) nach Pow­er Query zu importieren. Übri­gens: Ich for­matierte den Daten­bere­ich grund­sät­zlich zuerst in Excel als „Intel­li­gente” Tabelle, bevor ich die Dat­en nach PQ importiere. Das spart mitunter irri­tierende Nach­fra­gen seit­ens des Pro­gramms. Nach dem Import stellt sich das im Pow­er Query-Edi­tor so dar:

Die Dat­en direkt nach dem Import

Ein­steiger in Sachen Pow­er Query wer­den sich jet­zt gewiss denken, dass hier nur die einzel­nen Spal­ten der­art aufgeteilt, ges­plit­tet wer­den müssen, dass die Zeilen­schal­tun­gen jew­eils eine neue Zeile erzeu­gen. Das hört sich gut an, führt aber nach dem Teilen der ersten Spalte zu diesem Ergeb­nis:

Ein gewiss uner­wartetes Ergeb­nis 🙁

Sie erken­nen, dass zwar Spalte1 nach jed­er Zeilen­schal­tung eine neue Zeile gener­iert wor­den ist, aber in Spalte2 nach wie vor mehrere (logis­che) Zeilen in ein­er Zelle sind. Natür­lich wer­den Sie rasch auf die Idee kom­men, gle­ich bei­de Spal­ten zu markieren und dann die den Split-Vor­gang durchzuführen; aber wenn sie mehr als eine Spalte markiert haben, ste­ht Ihnen der Punkt Spalte teilen nicht zur Ver­fü­gung. 🙁 Den detail­lierten Weg, die Zeilen­schal­tun­gen als Tren­ner zu ver­wen­den, werde ich weit­er unten beschreiben. Und natür­lich auch, wie die Aufteilung in neue Zeilen statt Spal­ten mach­bar ist.

Die logis­che Fol­gerung: Jede Spalte muss einzeln in dieser Weise „behan­delt” wer­den. Darum löschen Sie entwed­er im recht­en Seit­en­fen­ster die bis­lang fehler­haften Schritte oder (wenn sie es sich ein­fach machen wollen) schließen Sie diese Abfrage ohne sie zu spe­ich­ern und begin­nen noch ein­mal ganz von vorne.

Sie befind­en sich jet­zt wieder an dem Punkt, wo die Dat­en frisch in den Edi­tor importiert wor­den sind. Ide­al­er­weise wer­den sie nun gle­ich an dieser Stelle die Abfrage sich­ern. Dazu ein Klick auf den Text unter­halb des Sym­bols Schließen & laden und wählen Sie Schließen & laden in… aus. Im Dialogfen­ster Klick­en Sie dann auf Nur Verbindung erstellen und bestäti­gen Sie mit OK. Sie kön­nen das direkt übri­gens auch über den Menüpunkt Datei erre­ichen.

Da Pow­er Query durch diesen Vor­gang geschlossen wurde, öff­nen Sie die Abfrage anschließend auf beliebige Weise, beispiel­sweise durch einen Dop­pelk­lick im recht­en Seit­en­fen­ster. Erweit­ern Sie das linke Seit­en­fen­ster durch einen Klick auf den senkrecht ste­hen­den Text Abfra­gen. Recht­sklick auf die Zeile Tabelle1 und wählen Sie dann im Kon­textmenü Ver­weis. Wieder­holen Sie diesen Vor­gang sofort noch ein­mal. Obwohl ich dur­chaus in Sachen PQ erfahren bin, ändere ich der Klarheit und Trans­parenz wegen den Namen der bei­den neu erstell­ten Abfra­gen auf Tabelle1 (Spalte1) und Tabelle1 (Spalte2). Das geht gut per Recht­sklick oder F2.

Da ja gewiss immer noch die Abfrage Tabelle1 (Spalte2) markiert ist, ist diese auch aktiv; ein Klick in die Über­schrift Spalte1 und die Taste Entf oder (gle­ich) ein Recht­sklick in die Über­schrift und im Kon­textmenü Ent­fer­nen. So bleibt nur die Spalte2 in dieser Abfrage erhal­ten (was ja auch dem Namen der Abfrage entspricht).

Wech­seln Sie zur Abfrage Tabelle1 (Spalte1) (per Mausklick) und dort löschen Sie naturgemäß Spalte2. An dieser Stelle ein Hin­weis, den ich Ihnen auch nur geben kann, weil ich über die schon oben ange­sproch­ene Beson­der­heit in Sachen Anführungsze­ichen gestolpert bin: Berech­nen Sie ein­fach ein­mal die Anzahl der Zeilen, die nach dem Split­ten ent­standen sein müssen. Hier wären das dann für die 4 „echt­en” Zeilen: 3 + 3 + 4 + 5, also 15 Zeilen. Bitte merken … 😉

Die Über­schrift Spalte1 ist ja markiert darum im Reg­is­ter Home in der Gruppe Trans­formieren ein Klick auf Spalte teilen. Im Kon­textmenü wählen Sie natür­lich Nach Trennze­ichen. Im Dialogfen­ster sind schon ver­schiedene Posi­tio­nen aus­ge­füllt. Das Trennze­ichen #(lf) als Syn­onym für die Zeilen­schal­tung ist seit­ens Pow­er Query kor­rekt erkan­nt wor­den:

Vieles erken­nt Pow­er Query automa­tisch so, wie gewollt

Bei Aufteilen ist Bei jedem Vorkom­men des Trennze­ichens markiert, auch das ist richtig. Bei Erweit­erte Optio­nen ändern Sie die Auswahl bei Aufteilen in auf Zeilen und Klick­en anschließend auf OK:

Nicht so gut … 🙁

… Und es sind nur zwölf statt der erwarteten 15 Zeilen. Ins­beson­dere die Zeilen 9 und 12 sind mehrzeilig geblieben und die jew­eils erste logis­che Zeile der Zelle ist leer. Wenn Sie etwas Ursachen­forschung betreiben wer­den Sie erken­nen, dass die Anführungsze­ichen die Fehlerur­sache sein müssen. Ich empfinde das als Fehler des Pow­er Query, denn der Inhalt der Spalte ist auch schon im Ursprung (Tabelle1) bere­its als Text for­matiert und aus diesen Grund sollte auch ein " als nor­males Zeichen behan­delt wer­den. Also gilt es, diesen Bug, diese Klippe möglichst sich­er zu umschif­f­en.

▲ nach oben …

Fehlerkorrektur

Löschen Sie erst ein­mal die let­zten Schritte. Dazu führen sie im recht­en Seit­en­fen­ster einen Recht­sklick auf die Zeile Spalte nach Trennze­ichen teilen durch und wählen Bis zum Ende löschen; die Sicher­heitsabfrage bestäti­gen Sie mit Löschen. Die Gänse­füßchen sind jet­zt wieder in den jew­eili­gen Zellen sicht­bar, also enthal­ten. Wech­seln Sie per Mausklick zur Ursprungsabfrage Tabelle1. Markieren Sie bei­de Spal­ten und führen Sie in eine der Über­schriften einen Recht­sklick durch. Werte erset­zen… und geben Sie bei Zu suchen­der Wert das Anführungsze­ichen " ein, bei Erset­zen durch beispiel­sweise die Tilde ~, sofern dieses Zeichen nicht im Text der Spal­ten vorkommt. Im Zweifel ver­wende ich stattdessen bei diesen Gele­gen­heit­en stets ßß, weil diese Zeichen­folge in der deutschen Sprache (und gewiss auch nicht in Fremd­sprachen) vorkom­men kann.

Wech­seln Sie nun wiederum zur Abfrage Tabelle1 (Spalte1) und jet­zt wer­den Sie gewiss erken­nen, warum ich anfangs kein Dup­likat der Tabelle1 erstellt habe, son­dern einen Ver­weis. Die Änderun­gen wur­den automa­tisch über­nom­men. 😎 Wieder­holen Sie nun noch ein­mal den Vor­gang in Sachen Spalte teilen und sie wer­den erken­nen, dass nun die kor­rek­te Anzahl von 15 Zeilen gegeben ist.

Wech­seln Sie nun zum Reg­is­ter Spalte hinzufü­gen und wählen dort in der Gruppe All­ge­mein den Punkt Indexs­palte. Jed­er einzel­nen Zeile wurde eine fort­laufende Num­mer, begin­nend mit 0 (null), in der Spalte Index hinzuge­fügt.

Wech­seln Sie zur Abfrage Tabelle1 (Spalte2) und über Home | Spalte teilen | Nach Trennze­ichen gelan­gen sie wieder in den entsprechen­den Dia­log. Dieser stellt sich nun aber etwas anders dar, denn als Trennze­ichen wird hier automa­tisch das Zeichen & vorgeschla­gen. Das ist natür­lich nicht richtig, es soll ja wieder die Zeilen­schal­tung sein.

Löschen Sie das Zeichen & im Textfeld und Klick­en Sie dann auf Erweit­erte Optio­nen. Bei der Gele­gen­heit kön­nen Sie auch gle­ich die Zeilen statt der Spal­ten markieren. Entschei­dend aber ist, dass sie bei Mith­il­fe von Son­derze­ichen teilen ein Häkchen set­zen. Ein Klick auf Son­derze­ichen ein­fü­gen ▼ erweit­ert diese Auswahl und dort markieren Sie Zeilen­vorschub. Automa­tisch wird nun ganz oben bei Trennze­ichen eingeben oder auswählen die Zeichen­folge #(lf) in das Textfeld einge­fügt und sie kön­nen nun mit OK bestäti­gen. Sie sehen, auch hier sind es 15 Zeilen. In dieser Query wer­den sie eben­falls eine Indexs­palte (wie gehabt) gener­ieren.

Spe­ich­ern Sie nun noch ein­mal die bei­den gener­ierten Ver­weis-Abfra­gen als Nur Verbindung. So ver­mei­den Sie, dass zum Abschluss nicht erforder­liche, unnötige Tabellen in Excel gespe­ichert wer­den. Übri­gens: Wahrschein­lich reicht es,eine der bei­den Abfra­gen in diesem Modus zu sich­ern. Meist wird die andere Query gle­icher­maßen als Nur Verbindung gespe­ichert.

Endspurt

Jet­zt ist die Vorar­beit erledigt. Nach dem Schließen & laden wer­den Sie die Abfrage Tabelle1 (Spalte1) öff­nen. Ein Klick auf Kom­binieren und im Drop­Down erweit­ern Sie den Punkt Abfra­gen zusam­men­führen | Abfra­gen als neue Abfrage zusam­men­führen. Es öffnet sich dieses Dia­log-Fen­ster:

Der ini­tiale Zusam­men­führen-Dia­log

Der Sinn dieses Vorge­hens: Die bei­den einzel­nen, neu erstell­ten Abfra­gen müssen wieder zu ein­er einzi­gen, zusam­men­hän­gen­den Query assem­bliert wer­den. Im oberen Fen­ster sehen Sie einen Auszug jed­er Dat­en, die in der aktuellen Abfrage enthal­ten sind. Ober­halb dieses „Kas­tens” ist auch noch der Name der Abfrage angegeben. Wählen Sie nun im mit­ti­gen Textfeld die zweite der verknüpften Queries: Tabelle1 (Spalte2) und das untere (große) Fen­ster wird mit den entsprechen­den Dat­en gefüllt.

Klick­en Sie nun im oberen (großen) Fen­ster als auch unten in die Spalte Index. Damit weisen Sie PQ an, die jew­eils zusam­menge­hören­den Werte dieser Spal­ten so zu verknüpfen, dass die Werte der gle­ichen Zeile (des iden­tis­chen Index) kor­rekt zuge­ord­net wer­den. – Sehr weit unten im Fen­ster sehen Sie die Textzeile Join-Art und darunter in einem Textfeld die Auswahl Link­er äußer­er Join mit der Erk­lärung, dass alle Zeilen der ersten (oberen) Abfrage ver­wen­det und die passenden Zeilen der anderen Query angezeigt wer­den:

Der Zusam­men­führen-Dia­log direkt vor dem Schließen

OK und das Ergeb­nis ist für Sie, wenn Sie das Kom­binieren zum ersten Mal durch­führen, gewiss nicht wirk­lich trans­par­ent:

Nur der Inhalt „Table” (Tabelle) in der neuen Spalte …

Erweit­ern Sie die Über­schrift dieser neuen, drit­ten Spalte durch einen Klick auf den Dop­pelpfeil _ und im neu erschiene­nen Dia­log löschen Sie das Häkchen bei Index und bei Ursprünglichen Spal­tenna­men als Prä­fix ver­wen­den:

Diese Auswahl ist kor­rekt

OK und das Ergeb­nis sollte (erst ein­mal) überzeu­gen. „Erst ein­mal”, weil ja die Spalte Index im näch­sten Schritt gelöscht wird und auch noch die Ersatz-Zeichen für die Gänse­füßchen zurück umge­wan­delt wer­den müssen. Und das geschieht genau­so wie im ersten Durch­gang, nur dass jet­zt das Zeichen ~ (oder beispiel­sweise die Zeichen­folge ßß) durch ein " erset­zt wer­den. Bleibt noch ein Klick auf Schließen & laden und diese Abfrage wird in ein neues Excel Arbeits­blatt geschrieben. Nun kön­nen Sie die so erstellte Tabelle kom­plett markieren (geht gut mit ein oder zwei Mal StrgA), auss­chnei­den und an beliebiger Posi­tion auf einem gewün­scht­en Arbeits­blatt ein­fü­gen.

▲ 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, Foren-Q&A, Join-Art, Power Query, Spalten bearbeiten, Text-Behandlung abgelegt und mit , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.