Clever-Excel-Forum

Normale Version: Zwei Spalten gleichzeitig teilen - mehrere Spaltenbegrenzer
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Moin, ich habe zwei Tage lang gesucht und finde einfach keine Lösung für mein Problem, also probiere ich es mal hier.

Folgende Sache:
Für einen Online-Shop müssen wir eine Artikel-CSV (kommt vom Lieferant) formatieren, sodass diese in eine Warenwirtschaft (JTL-Wawi) eingespielt werden kann.
Um Mediendateien auszulesen, müssen die Daten wie folgt vorliegen:

Artikelnummer; Dateiart; Dateipfad
123; Anleitung 1; dasisteinbeispielpfad1.pdf
123; Anleitung 2; dasisteinbeispielpfad2.pdf
123; Mediendatei 4dasisteinbeispielpfad3.pdf
578; Mediendatei 1dasisteinbeispielpfad4.pdf


Sie liegen gerade aber in folgendem Format vor:

Artikelnummer; Dateiart; Dateipfad
123; Anleitung 1,Anleitung 2, Mediendatei 4, Mediendatei 1; dasisteinbeispielpfad1.pdf, dasisteinbeispielpfad2.pdf, dasisteinbeispielpfad3.pdf, dasisteinbeispielpfad4.pdf

Ich kriege es hin mithilfe der Power Query, die Spalten mit dem Trennzeichen (,) einfach zu teilen und auf neue Zeilen aufzusplitten. Dann füge ich die Spalten Dateiart und Dateipfad im Nachhinein wieder zusammen (weil man ja nicht zwei Spalten gleichzeitig teilen kann) und man sollte meinen, dass alles funktioniert.

Nun zu meinem Problem:
Da einige Dateipfade keinen dazugehörigen Namen haben, kommt es zu einer Verschiebung der Tabelle und alles darunter wird unbrauchbar.

Beispiel Original-Datei:

Artikelnummer; DateiartDateipfad
123; Instructions 1,Instructions 2, Beispieldatei ← nur 3 Dateiarten; dasisteinbeispielpfad1.pdf, dasisteinbeispielpfad2.pdf, dasisteinbeispielpfad3.pdf, dasisteinbeispielpfad4.pdf ← 4 Dateidownloads

456; Anleitung 1,Anleitung 2, Mediendatei 4, Mediendatei 1; anderedatei1.pdf, anderedatei4.pdfanderedatei4.pdfanderedatei4.pdf

Was mit meiner zusammengefügten Tabelle passiert:

123; Instructions 1; dasisteinbeispielpfad1.pdf

123; Instructions 2dasisteinbeispielpfad2.pdf
123; Beispieldateidasisteinbeispielpfad3.pdf
123; Anleitung 1dasisteinbeispielpfad4.pdf   ← ab hier ist das Mapping dann falsch, Anleitung 1 gehört eigentlich zu Artikelnummer: 456
456; Anletiung 2; anderedatei1.pdf
.....

Es wäre super nett, wenn mir jemand helfen könnte, ich bin echt am verzweifeln!
Grüße!
Hi

Hier mal zwei Varianten.
Ich hätte gedacht das es einfacher zu Lösen wäre mit PQ.
Geht bestimmt auch einfacher, aber wie. Dodgy 
[attachment=35115]

Gruß Elex
Hallo,

ich bin mir sicher, dass sich dein Problem einfach lösen lässt !!!!

Aber ich bin nicht bereit, mir aus deinen Informatioen eine Mappe zu basteln, in der ich dann in einer PQ-Abfrage das Problem lösen könnte.

Wenn du aber eine Mustermappe bereitstellt, die Problemfälle als auch problemlose Fälle, sowei ein händisch eingetragesnes Wunschergebnis enthält, dann helfe ich dir gerne.
Moin

Mein Ansatz auf dem Blatt Tabelle4.
Hi

Ich empfand alle bisherigen PQ-Lösungsvorschläge als nicht gerade zufriedenstellend.
Mal ungeachtet dessen ob es für den TE noch interessant ist, hier noch mal ein Code Versuch.
Code:
let
    Quelle = Excel.CurrentWorkbook(){[Name="TabDaten"]}[Content],
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(Quelle, "Spalte1", Splitter.SplitTextByDelimiter("; ", QuoteStyle.Csv), {"Spalte1.1", "Spalte1.2", "Spalte1.3"}),
    #"Höher gestufte Header" = Table.PromoteHeaders(#"Spalte nach Trennzeichen teilen", [PromoteAllScalars=true]),
    #"Ersetzter Wert" = Table.ReplaceValue(#"Höher gestufte Header",null,"",Replacer.ReplaceValue,{"Dateiart", "Dateipfad"}),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Ersetzter Wert", "Benutzerdefiniert", each Text.Split([Dateiart], ", ")),
    #"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert.1", each Text.Split([Dateipfad], ", ")),
    #"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte1", "Benutzerdefiniert.2", each List.Zip({[Benutzerdefiniert],[Benutzerdefiniert.1]})),
    #"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte2",{"Dateiart", "Dateipfad", "Benutzerdefiniert", "Benutzerdefiniert.1"}),
    #"Erweiterte Benutzerdefiniert.2" = Table.ExpandListColumn(#"Entfernte Spalten", "Benutzerdefiniert.2"),
    #"Hinzugefügte benutzerdefinierte Spalte3" = Table.AddColumn(#"Erweiterte Benutzerdefiniert.2", "Benutzerdefiniert", each List.ReplaceValue([Benutzerdefiniert.2], null, "", Replacer.ReplaceValue)),
    #"Extrahierte Werte" = Table.TransformColumns(#"Hinzugefügte benutzerdefinierte Spalte3", {"Benutzerdefiniert", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
    #"Spalte nach Trennzeichen teilen1" = Table.SplitColumn(#"Extrahierte Werte", "Benutzerdefiniert", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Dateiart", "Dateipfad"}),
    #"Entfernte Spalten1" = Table.RemoveColumns(#"Spalte nach Trennzeichen teilen1",{"Benutzerdefiniert.2"})
in
    #"Entfernte Spalten1"
Code:
Spalte1
Artikelnummer; Dateiart; Dateipfad
123; Instr 1, Instr 2, Instr 3; pfad1.pdf, pfad2.pdf, pfad3.pdf, pfad4.pdf, pfad5.pdf
456; Anleitung 1, Anleitung 2, Mediendatei 4, Mediendatei 1; anderedatei1.pdf, anderedatei4.pdf, anderedatei4.pdf, anderedatei4.pdf
125; Instr 1, Instr 2, Instr 3, Instr 4, Instr 5, Test 6; pfad1.pdf, pfad2.pdf, pfad3.pdf, pfad4.pdf
128; nur 1; Pfad1, Pfad2
130; Zz1
Hier die Beispieldaten.

Danke @shift-del für deinen Vorschlag.

Gruß Elex
Hallo,

hier noch eine Variante. Zwar auch recht kurz. Aber nicht so kurz und elegant, wie die von Elex.
Wozu die Mühe?
Der TS meldet sich nie wieder und ist sicher weitergezogen bzw. hier war nur Zwischenhalt und/oder er hat schon eine Lösung, mit der er arbeiten kann.
Das hier hört sich z.B. verdächtig nach unserem TS mit dem beschriebenen Problem an
https://forum.jtl-software.de/threads/im...rn.140706/
https://forum.jtl-software.de/threads/ku...re.141227/
https://forum.jtl-software.de/threads/pe...en.141305/

Das nennt sich dann wohl Crowd-Sourcing  Dodgy
Hallo Warkings,

die Fragestellung war interssant und somit eine schöne PQ-Übungsaufgabe. Nachdem ich eine recht passable Lösung gefunden hatte, konnte ich sehen, dass es noch besser geht.

Da PQ noch relativ neu ist und noch nicht von so vielen Anwenderen genutzt wird, ist es wichtig, vorhandenes Wissen zu vertifen und durch neue Fragestellungen zu erweitern. Würde ich nur auf Beiträge reagieren, zu denen ich die Antworten aus den Schubladen ziehen kann, würde ich nichts mehr lernen.
Das ist natürlich jedem freigestellt,  mache ich auch manchmal. Für mich war die Aufgabe jetzt nicht so spannend, aber das ist natürlich Ansichtssache. Und wenn abzusehen ist, dass vom TS keine Antwort kommen wird und es auch noch nach Crossposting aussieht, ist meine Motivation bei solchen Übungsaufgaben eher gering. Man (oder ich) will schon wissen, ob das evtl. hilfreich war.

PS PQ wurde AFAIK mit Excel 2013 eingeführt, so neu ist das nicht .
Ich fand die Aufgabe gut. Vor allem als Übung für jene, die noch nicht auf dem Excel-Profilegel sind...
Seiten: 1 2