Live-Forum - Die aktuellen Beiträge
Datum
Titel
03.10.2025 22:18:19
03.10.2025 18:57:58
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Power Query - versetzte Zeilen

Power Query - versetzte Zeilen
26.01.2023 10:25:53
Kai
Moin moin,
ich habe mal eine Frage. Ich habe Inventurergebnisse als Textdatei und will diese mittels Power Query in Form bringen, damit verschiedene Menschen damit gut arbeiten können und ich das bei jeder folgenden Inventur gut anwenden kann. So weit, so gut. Durch ein Riesenlager kann es sein, dass Artikel an verschiedenen Positionen stehen und dementsprechend auf vielen verschiedenen Zählseiten aufgenommen werden. Diese Seitenzahlen werden in den Ergebnissen mit aufgeführt - allerdings trennt unser Programm nach 4 Seitenzahlen in die nächste Zeile auf. Ich möchte aber, dass pro Artikel eine Zeile da ist mit allen Seitenzeilen aneinandergereiht. Wie mache ich das in Power Query? Jemand eine Idee? Ich bin soweit, dass ich alle Zeilen in Spalten rechts angefügt bekomme aber dann stehen sie halt alle versetzt. Ich kann da ja schlecht leere löschen bzw. rausfiltern weil dann haben die zeilen keinen bezug mehr zur Artikelposition...
Userbild
Gruß
Kai
Anzeige

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: so noch nicht eindeutig ...
26.01.2023 10:58:01
neopa
Hallo Kai,
... u.a. was genau Du wo zunächst hast. Was sind Seitenzahlen und was Seitenzeilen? (D)eine (Beispiel)datei mit dem IST und Deinem Ziel wäre hilfreicher.
Aber vielleicht reicht Dir ja auch schon der Hinweis auf die Funktion [Ausfüllen; nach unten]
Gruß Werner
.. , - ...
Anzeige
AW: so noch nicht eindeutig ...
26.01.2023 11:14:40
Kai
Mein Ziel ist folgendes: Ich möchte, dass alle zum Artikel gehörenden Seitenzeilen in einer Reihe stehen... Bei dem Begriff "Seiten" handelt es sich um die Listen, auf denen die Zähler die Zählungen aufnehmen. In dem gewählten Bild haben Zähler den Artikel "Kekse" auf der physischen Seite 10, 15, 16, 18, 100, 233, 355, 155, 184, 134, 122 aufgenommen. Das Programm zeigt aber pro Artikel nur 4 Zählseiten in einer Reihe und bricht dann in nächste Zeile um - das ist das Problem.
Das ist hierbei aber eigentlich auch nicht so wichtig. Wichtig ist, dass alle Zahlen von Leerzeilen zu dem darüber liegenden Artikel gehören aber man leider nie wissen kann, wieviele leere Zeilen es gibt. Das gewünschte Ergebnis ist eigentlich das hier:
Userbild
Gruß
Kai
Anzeige
AW: dazu ...
26.01.2023 11:22:46
neopa
Hallo Kai,
... lade doch einfach mal den vorherigen ISTzustand als XLSX-Datei hoch. Nachstellen möchte ich es nicht.
Gruß Werner
.. , - ...
AW: dazu ...
26.01.2023 11:25:48
Kai
Hi Werner,
das ist der IST-Zustand. Genau so bekomme ich die Zeilen ins Power Query importiert.
Gruß
Kai
AW: kann nur wiederholen ...
26.01.2023 11:33:11
neopa
Hallo Kai,
... sStelle doch den entsprechenden Tabellenauszug Deines Imports hier als XLSX-Datei ein. Dann sehen wir weiter. "Bilder" kann man in Excel nicht auswerten.
Gruß Werner
.. , - ...
Anzeige
AW: Datei liegt nun vor, thread aber offen ...
26.01.2023 12:02:25
neopa
Hallo Kai,
... die "Idee" die mir "vorschwebte", konnte ich mit PQ nicht realisieren.
Bin aber überzeugt, dass ein PQ-Profi Deine Zielstellung realisieren kann. Deshalb habe ich für diese den thread schon als offen gekennzeichnet. Musst jetzt halt vielleicht etwas Geduld haben.
Gruß Werner
.. , - ...
Anzeige
AW: Datei liegt nun vor, thread aber offen ...
26.01.2023 12:28:19
Kai
Okay, danke für Deine Bemühungen!
AW: Datei liegt nun vor, thread aber offen ...
26.01.2023 13:18:49
Yal
Hallo Kai,
Du musst die 4 ersten Spalten "nach unten" ausfüllen, dann entpivotieren. Repivotieren lässt sich wahrscheinlich nur "ohne Aggregation" realisieren, dann erweitern.
VG
Yal
AW: nachgefragt ...
26.01.2023 13:33:24
neopa
Hallo Yal,
... genau was Du geschrieben hattest, war heute Vormittag meine "Idee". Nach dem entpivotieren kam ich nicht zu dem angestrebten. Ich dachte dann, ich müsste die erzeugte "Attributspalte" für die Nr. 12345 entsprechend neu durchnummerieren. Kam damit aber auch nicht klar.
Kannst Du mal bitte Deinen M-Code einstellen?
Gruß Werner
.. , - ...
Anzeige
AW: nachgefragt ...
26.01.2023 14:30:48
Kai
Hmm...ich weiß nicht. Jetzt habe ich nur noch 2 Spalten und bei allen Artikeln, in denen mehr als 4 Seiten benutzt wurden dasselbe Problem - nur nach unten jetzt :D
AW: nachgefragt ...
26.01.2023 14:35:13
Yal
Hallo zusammen,
der "Repivotieren" passt nicht. Man muss gruppieren. Die Werte müssen zuerst zu Text, um als Textkette kombiniert zu sein.
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Lagerplatz", Int64.Type}, {"Artikelnummer", Int64.Type}, {"Artikeltext", type text}, {"Warengruppe", type text}, {"Wert", Int64.Type}, {"Wert2", Int64.Type}, {"Wert3", Int64.Type}, {"Wert4", Int64.Type}, {"Wert5", Int64.Type}, {"Wert6", Int64.Type}, {"Wert7", Int64.Type}, {"Wert8", Int64.Type}, {"Wert9", Int64.Type}, {"Inventurseite 1", Int64.Type}, {"Inventurseite 2", Int64.Type}, {"Inventurseite 3", Int64.Type}, {"Inventurseite 4", Int64.Type}}),
    #"Nach unten gefüllt" = Table.FillDown(#"Geänderter Typ",{"Lagerplatz", "Artikelnummer", "Artikeltext", "Warengruppe"}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Nach unten gefüllt", {"Lagerplatz", "Artikelnummer", "Artikeltext", "Warengruppe"}, "Attribut", "Wert.1"),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Entpivotierte andere Spalten",{{"Wert.1", "Wert"}}),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Umbenannte Spalten", "Kennzahl", each if Text.Start([Attribut],4)= "Wert" then "Wert" else "Inventurseite"),
    #"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Attribut"}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Entfernte Spalten",{{"Wert", type text}}),
    #"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ1", {"Lagerplatz", "Artikelnummer", "Artikeltext", "Warengruppe", "Kennzahl"}, {{"Liste", each Text.Combine([Wert],","), type text}}),
    #"Pivotierte Spalte" = Table.Pivot(#"Gruppierte Zeilen", List.Distinct(#"Gruppierte Zeilen"[Kennzahl]), "Kennzahl", "Liste"),
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Pivotierte Spalte", "Inventurseite", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Inventurseite.1", "Inventurseite.2", "Inventurseite.3", "Inventurseite.4", "Inventurseite.5", "Inventurseite.6", "Inventurseite.7", "Inventurseite.8", "Inventurseite.9", "Inventurseite.10", "Inventurseite.11", "Inventurseite.12", "Inventurseite.13", "Inventurseite.14", "Inventurseite.15", "Inventurseite.16"}),
    #"Geänderter Typ2" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Inventurseite.1", Int64.Type}, {"Inventurseite.2", Int64.Type}, {"Inventurseite.3", Int64.Type}, {"Inventurseite.4", Int64.Type}, {"Inventurseite.5", Int64.Type}, {"Inventurseite.6", Int64.Type}, {"Inventurseite.7", Int64.Type}, {"Inventurseite.8", Int64.Type}, {"Inventurseite.9", Int64.Type}, {"Inventurseite.10", Int64.Type}, {"Inventurseite.11", Int64.Type}, {"Inventurseite.12", Int64.Type}, {"Inventurseite.13", Int64.Type}, {"Inventurseite.14", Int64.Type}, {"Inventurseite.15", Int64.Type}, {"Inventurseite.16", Int64.Type}}),
    #"Spalte nach Trennzeichen teilen1" = Table.SplitColumn(#"Geänderter Typ2", "Wert", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Wert.1", "Wert.2", "Wert.3", "Wert.4", "Wert.5", "Wert.6", "Wert.7", "Wert.8", "Wert.9", "Wert.10", "Wert.11", "Wert.12", "Wert.13", "Wert.14", "Wert.15", "Wert.16", "Wert.17", "Wert.18"}),
    #"Geänderter Typ3" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen1",{{"Wert.1", Int64.Type}, {"Wert.2", Int64.Type}, {"Wert.3", Int64.Type}, {"Wert.4", Int64.Type}, {"Wert.5", Int64.Type}, {"Wert.6", Int64.Type}, {"Wert.7", Int64.Type}, {"Wert.8", Int64.Type}, {"Wert.9", Int64.Type}, {"Wert.10", Int64.Type}, {"Wert.11", Int64.Type}, {"Wert.12", Int64.Type}, {"Wert.13", Int64.Type}, {"Wert.14", Int64.Type}, {"Wert.15", Int64.Type}, {"Wert.16", Int64.Type}, {"Wert.17", Int64.Type}, {"Wert.18", Int64.Type}})
in
    #"Geänderter Typ3"
Die Anzahl an Spalten ist durch die Wiederholung der Elemente in Zeilen 1 und 4. Da müsste eher eine Summierung vorkommen, aber verliert man die Verbindung Wert zu InventurSeite.
Vielleicht reicht es, wenn man die 2 letzte "SplitColumn" auslässt.
VG
Yal
Anzeige
AW: das ist so nicht das gewünschte owT
26.01.2023 15:40:47
neopa
Gruß Werner
.. , - ...
AW: das ist so nicht das gewünschte owT
26.01.2023 22:51:30
Yal
Hallo zusammen,
da wäre dann Kais Rückmeldung gefragt.
In dem Beitrag von 26.01.2023 11:14:40 war aber etwas sehr ähnlich zu finden. Daran habe ich mich orientiert.
VG
Yal
Nur entpivotiert
26.01.2023 14:37:29
Yal
Vielleicht reicht es nur enpivotiert...
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Lagerplatz", Int64.Type}, {"Artikelnummer", Int64.Type}, {"Artikeltext", type text}, {"Warengruppe", type text}, {"Wert", Int64.Type}, {"Wert2", Int64.Type}, {"Wert3", Int64.Type}, {"Wert4", Int64.Type}, {"Wert5", Int64.Type}, {"Wert6", Int64.Type}, {"Wert7", Int64.Type}, {"Wert8", Int64.Type}, {"Wert9", Int64.Type}, {"Inventurseite 1", Int64.Type}, {"Inventurseite 2", Int64.Type}, {"Inventurseite 3", Int64.Type}, {"Inventurseite 4", Int64.Type}}),
    #"Nach unten gefüllt" = Table.FillDown(#"Geänderter Typ",{"Lagerplatz", "Artikelnummer", "Artikeltext", "Warengruppe"}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Nach unten gefüllt", {"Lagerplatz", "Artikelnummer", "Artikeltext", "Warengruppe"}, "Attribut", "Wert.1"),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Entpivotierte andere Spalten",{{"Wert.1", "Wert"}}),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Umbenannte Spalten", "Kennzahl", each if Text.Start([Attribut],4)= "Wert" then "Wert" else "Inventurseite"),
    #"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Attribut"}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Entfernte Spalten",{{"Wert", type text}}),
    #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Geänderter Typ1",{"Lagerplatz", "Artikelnummer", "Artikeltext", "Warengruppe", "Kennzahl", "Wert"})
in
    #"Neu angeordnete Spalten"
VG
Yal
Anzeige
AW: TE wollte es anders ...
26.01.2023 15:44:27
neopa
Hallo Yal,
... ich hatte das entpivotieren auch nur für die Spalten ab "Wert" vorgenommen. Doch dann kam ich nicht weiter.
Gruß Werner
.. , - ...
AW: Nur entpivotiert
27.01.2023 08:22:09
Luschi
Hallo PQ-Fan's,
Ich habe auf der Grundlage von Yal's Idee der Gruppierung/Entpivotierung ein bißchen mehr Dynamik für die 'Datentypänderung' und Splitten/Spaltenüberschriften hinzugefügt.
Hier mal mein Versuch: https://www.herber.de/bbs/user/157493.xlsx
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Nur entpivotiert
27.01.2023 09:04:22
Kai
Moin moin,
das sieht gut aus! So muss das ;) Wie geht das?
Gruß
Kai
AW: wenn ich der TE wäre, ...
27.01.2023 09:12:12
neopa
Hallo Luschi,
... würde ich zu Deinem Ergebnis schreiben: "so meinte ich das nicht". Mein Ziel wäre es, dass die Datenwerte aus R5:Y5 in R2:Y2 "verschoben" sein sollten und die Datenzeile 5 damit ganz entfällt. Der aktuelle Datensatz in Zeile 6 hat dagegen seine Berechtigung, weil deren Daten sich in Wert.1 bis Wert.9 sich zumindest teilweise unterscheiden.
Persönlich meine ich nach wie vor, dass es am einfachsten ist, die Datensätze in PQ einzulesen, die fehlenden Datenwerte nach unten auffüllen zu lassen und dann nach Artikelnummer noch zu sortieren. Das ist einfach wie schnell getan und wäre für mich auch übersichtlich genug. Aber ich bin nicht der TE.
Gruß Werner
.. , - ...
Anzeige
AW: Nur entpivotiert
27.01.2023 10:07:46
Yal
@Luschi: sehr gut. Könnte zwar das Ergebnis sehen (die Erweiterung der Beispiel bringt mehr Sichtbarkeit für das Ergebnis), aber im M-Code mit meiner xl2016 nicht in die Tiefe gehen.
@Werner: Ich gehe davon aus, dass Du deine Beitrag verfasst hast, während Kai seine Antwort postete. Persönlich würde ich mir höchsten zumuten "so habe ich den Fragensteller nicht verstanden" zu sagen. Um "so hat der Fragesteller nicht gemeint" zu sagen, fehlen mir die Fähigkeit Gedanken zu lesen. Aber ich arbeite dran ;-)
VG
Yal
Anzeige
AW: Nur entpivotiert
27.01.2023 11:26:56
Luschi
Hallo Yal,
auch in Excel 2019/21 kann man bei 'Functions', 'list in list', zusammengesetzten Kette von PQ-Schritten usw. nicht in die Tiefe gehen, um Zwischenergebnisse sich anzuschauen.
Das ist dann so, wie bei den neuen Let- und Lambda-Möglichkeiten in E_365 - die Funktionsketten werden immer länger und die F9-Taste hilft da überhaupt nicht, um Teilergebnisse zu erhalten.
Fazit: auch PQ-M hat seine Tücken und viel Wissen darum hilft dann auch viel. Nur mal dann an PQ denken, wenn Excelformeln nicht weiterhelfen oder Massendaten einem um die Ohren fliegen, ist es meistens schon zu spät.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: dem ist so ...
27.01.2023 11:45:32
neopa
Hallo Yal,
... als ich den Beitrag von Luschi sah, hatte Kai noch nicht geantwortet. Ich hatte mir dann zunächst den Lösungsvorschlag von Luschi angesehen (ohne in die Tiefe seines M-Codes einzudringen) und meinen Beitrag geschrieben. Dies ohne nachzusehen, ob zwischenzeitlich ein weiterer Beitrag eingestellt war. Danach habe ich mir den thread auch nicht gleich angesehen, so dass ich den Beitrag von Kai erst jetzt gelesen habe.
Zu meiner getroffenen Aussage stehe ich aber jetzt noch. Ich schrieb in meinen vorherigen Beitrag ja abschließend auch: "Aber ich bin nicht der TE".
Gruß Werner
.. , - ...
Anzeige
Die Lösung
27.01.2023 12:26:33
Kai
So, ich habe die Lösung:
Auffüllen der Daten
Neue Benutzer-definierte Spalte und in dieser die Seitenzahlen miteinander verknüpfen ("&")
Auswählen aller Spalten bis auf dieser und Gruppieren mittels "Summieren" der Benutzerdefinierten Spalte
Erstens will ich aber gar kein Summieren, bin nur zu faul, das alles zu schreiben und zweitens erhalte ich dadurch einen Fehler, also: Ich tausche List.Sum durch Text.Combine aus und voilà: Alles in Reihe!
Das einzige, was mir jetzt noch spanisch vorkommt, sind die Leerzeichen dazwischen...aber die kriege ich auch noch weg ;)
Danke für eure Hilfe und Gedankenanstöße!
Anzeige
AW: Die Lösung
28.01.2023 15:31:00
Luschi
Hallo Kai,
von welchen Leerzeichen sprichst Du, sowas gibt es in meiner Lösung nicht - zeige doch mal Deinen PQ-M-Code und leeche nicht nur von unseren gezeigten Beispielen.
Gruß von Luschi
aus klein-Paris
;
Anzeige
Anzeige

Infobox / Tutorial

Power Query: Versetzte Zeilen Zusammenführen


Schritt-für-Schritt-Anleitung

  1. Power Query öffnen: Lade deine Excel-Datei in Power Query.
  2. Nach unten ausfüllen: Wähle die Spalten aus, die du nach unten ausfüllen möchtest. Gehe zu „Transformieren“ > „Nach unten ausfüllen“. Dies hilft, die Daten zu strukturieren, indem leere Zeilen entfernt werden.
  3. Entpivotieren: Wähle die anderen Spalten (z.B. die Spalten für die Seitenzahlen) aus und gehe zu „Transformieren“ > „Entpivotieren“ > „Andere Spalten“. Dies führt dazu, dass die Spalten in Zeilen umgewandelt werden.
  4. Benutzerdefinierte Spalte hinzufügen: Füge eine benutzerdefinierte Spalte hinzu, um die Seitenzahlen zu verketten:
    = Text.Combine([Wert], ", ")
  5. Gruppieren und Summieren: Wähle die Spalten, die du gruppieren möchtest, und gehe zu „Gruppieren“ > „Summieren“ oder „Text kombinieren“ je nach Bedarf. Hier kannst du die Funktion Text.Combine verwenden, um alle Seitenzahlen in einer Zeile darzustellen.
  6. Leere Zeilen entfernen: Falls noch leere Zeilen vorhanden sind, kannst du diese mit „Transformieren“ > „Leere Zeilen entfernen“ beseitigen.
  7. Daten laden: Lade die bearbeiteten Daten zurück in Excel.

Häufige Fehler und Lösungen

  • Leere Zeilen bleiben nach dem Ausfüllen: Stelle sicher, dass du alle relevanten Spalten auswählst, bevor du „Nach unten ausfüllen“ anwendest.
  • Versetzte Daten nach dem Entpivotieren: Achte darauf, dass du die richtige Reihenfolge beim Gruppieren wählst. Oft hilft es, die Spalten vorher korrekt zu benennen.
  • Fehler beim Gruppieren: Wenn du versuchst, die Gruppierung mit „Summieren“ durchzuführen und Fehler bekommst, ersetze „List.Sum“ durch „Text.Combine“, um die Werte korrekt zu verketten.

Alternative Methoden

  • Power Query leere Zeilen entfernen: Eine weitere Möglichkeit ist, die leeren Zeilen direkt im Abfrage-Editor zu filtern, bevor du mit dem Gruppieren beginnst.
  • Zeilenumbruch verwenden: Anstatt die Daten zu verketten, kannst du auch einen Zeilenumbruch verwenden, um die Daten in separate Zeilen zu bringen. Dies kann über die Funktion Text.Combine mit einem passenden Trennzeichen erreicht werden.

Praktische Beispiele

Angenommen, du hast folgende Daten in Excel:

Artikel Seitenzahl
Kekse 10
15
16
18
Schokolade 20
25

Nach dem Anwenden der oben genannten Schritte solltest du eine Tabelle erhalten, die so aussieht:

Artikel Seitenzahlen
Kekse 10, 15, 16, 18
Schokolade 20, 25

Tipps für Profis

  • Kennzahlen mit 6 Buchstaben: Wenn du mit spezifischen Kennzahlen arbeitest, kannst du diese in einer benutzerdefinierten Spalte kombinieren, um die Übersichtlichkeit zu erhöhen.
  • M-Code optimieren: Halte deinen M-Code übersichtlich und strukturiert, um die Nachvollziehbarkeit zu gewährleisten.
  • Datenvalidierung: Überprüfe deine Daten regelmäßig, um sicherzustellen, dass die Transformationen korrekt angewendet wurden.

FAQ: Häufige Fragen

1. Wie kann ich leere Zeilen in Power Query entfernen?
Du kannst leere Zeilen entfernen, indem du in Power Query die Funktion „Leere Zeilen entfernen“ verwendest. Achte darauf, dass du zuerst alle notwendigen Daten gefüllt hast.

2. Was ist der Unterschied zwischen Entpivotieren und Gruppieren?
Entpivotieren wandelt Spalten in Zeilen um, während Gruppieren dazu dient, Daten zu aggregieren oder zusammenzufassen, beispielsweise durch Summieren oder Verketten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige