06.08.2025, 11:38 (Dieser Beitrag wurde zuletzt bearbeitet: 06.08.2025, 11:40 von Magdalika.)
Hallo,
ich habe folgendes Anliegen:
Ich habe zwei Tabellen.
In einer Tabelle ist ein bestimmter Inhalt blöderweise in einer einzigenZelle aufgelistet. Er gehört eigentlich nicht nur in eine Zelle, sondern auf viele Zeilen aufgeteilt.
Dieser Inhalt matcht teilweise mit Inhalt aus Tabelle B.
Gibt es eine Möglichkeit, diesen Inhalt aus Tabelle A Zellen aus Tabelle B zuzuordnen?
Es sind schlecht gepflegte Inhalte/Exporte und ich möchte vermeiden alles manuell kopieren zu müssen. Trennung der Inhalte in der Zelle von Tabelle A nur durch Absätze,ohne Delimitatoren.
Ich weiß nicht, wie ich sie nun automatisiert mit den teils matchenden Zellen aus Tabelle B zusammenbringe.
Versteht ihr mein Problem? Gibt es hierfür eine Lösung?
Der durch das verwendete Programm, aus dem die Daten exportiert werden, schlecht formatierte/aufgeteilte Text befindet sich in Tabelle 2, Spalte B. Die Daten, um die es geht, sind immer als Fließtext in einer Zelle enthalten + durch Absätze voneinander getrennt (ohne Kommata, Semikola etc.). Liegt leider am Programm und kann vorerst nicht behoben werden.
Die Infos aus Tabelle 2, Spalte B fehlen mir in Tabelle 1.
Ich möchte den Fließtext 1) auf Zeilen aufteilen 2) den entsprechenden Unternehmen zuordnen, ohne, dass Daten durcheinandergeraten/verloren gehen. 3) Bestenfalls dann noch die unterschiedlichen Kategorien, die gerade in Spalte B enthalten sind, auf verschiedene Spalten aufteilen (Vertragsversion/ Zusatzvertragsversion/ Datum) 4) in Tabelle 1 korrekt einfügen
Habe gerade mit Power Query herumprobiert, bin aber noch nicht groß weitergekommen.
die Frage ist, ob auch die informationen für die anderen Vertragspartner aus genau dieser Zelle gelesen werden müssen oder ob die in anderen Zellen stehen. von daher ist deine Beispieldatei noch etwas ungenügend ausgestattet. außerdem solltest du immer auch zeigen, wie das Ergebnis für diese Datei sein soll.
zur erläutertung a - sucht erstmal die richtige Zeile in der Tabelle2 b - sucht die Zeile innerhalb des gefundenen Textes c - teilt den Text der gefunden Zeile und dann wird in diesem Text die Überschrift gesucht und das nächste Wort ausgegeben.
hier mal der Versuch einer seperaten VBA Version. Ich bin gespannt ob es sich bewährt? Das Makro befindet sich in dieser Datei, diese Datei kopiert die Daten von Tabelle2 in Tabelle1.
In Zelle C1 und C2 muss der Name der Quelle und Zieldatei angegeben werden. Die Originaldateien bleiben als xlsx Dateien bestehen.
(06.08.2025, 15:26)Magdalika schrieb: 2) den entsprechenden Unternehmen zuordnen, ohne, dass Daten durcheinandergeraten/verloren gehen.
Das ist mit Power Query problemlos möglich, aber das Scenario ist ein wenig zu fiktiv, da Du keine Tabellen verwendest.
Hast Du eine Tabelle und Spalte A soll separiert werden, Spalte B aufgetrennt und die Unternehmen aus dem Text entnommen und dann als Resultat eine Tabelle mit den Spalten ausgegeben werden? Im Prinzip ist Spalte A überflüssig, weil Spalte B enthält die Unternehmen...
Ich würde es vermutlich auch mit Power Query machen, dabei aber direkt die exportierten Daten verarbeiten.
Aber selbst für das recht banale Beispiel sollte, um eine Fehlinterpretation zu vermeiden, eine händisch eingetragen Wunschlösung enthalten sein und es sollte vorher sorgfältig geprüft werden, ob es noch weitere Datenkonstellationen gibt, die bei der Transformation zu berücksichtigen sind.
Ach ich hatte gerade vergessen, das exakte Vorgaben, bei einer Forumsanfrage nicht so wichtig sind, das ja häufiges nachjustieren einer Lösung bei einer Forumshilfe kostenlos ist.
Ich kopier Dir mal den MCode mit dem man die Spalte B in Einzelteile zerlegt, weißt Du wie Du das bei Dir zum Laufen bekommst?
Andreas.
Code:
let Source = Daten, OneCol = Table.SelectColumns(Source,{"vertragsversion"}), data = Table.RenameColumns(OneCol,{{"vertragsversion", "data"}}), Filtered = Table.SelectRows(data, each ([data] <> null)), Split = Table.ExpandListColumn(Table.TransformColumns(Filtered, {{"data", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "data"), Trim = Table.TransformColumns(Split,{{"data", Text.Trim, type text}}), Datum = Table.AddColumn(Trim, "Datum", each Date.From(Text.BeforeDelimiter([data], "vertragsversion")), type date), part = Table.AddColumn(Datum, "part", each Text.Trim(Text.BetweenDelimiters([data], "vertragsversion", "zusatzvertragsversion")), type text), vp = Table.AddColumn(part, "vertragspartner", each Text.AfterDelimiter([part], " "), type text), vv = Table.AddColumn(vp, "vertragsversion", each Text.BeforeDelimiter([part], " "), type text), zvv = Table.AddColumn(vv, "zusatzvertragsversion", each Text.Trim(Text.AfterDelimiter([data], "zusatzvertragsversion")), type text), Clean = Table.RemoveColumns(zvv,{"data", "part"}) in Clean
07.08.2025, 19:15 (Dieser Beitrag wurde zuletzt bearbeitet: 07.08.2025, 19:16 von Magdalika.)
Hallo zusammen,
ganz herzlichen Dank für die vielen Ideen, die schaue ich mir gleich mal genauer an.
Ich habe euch noch eine anschaulichere Datei erstellt, die ich anhänge.
In Tabelle 1 seht ihr die Rohdaten. In "Ergebnis" sieht es so aus, wie es sein sollte.
D.h. eigentlich geht es darum, die Daten aus B7 und C7 aufzuteilen - die jeweilige Vertragsversion aus Spalten B und C den Unternehmen zuordnen. Wichtig: Teilweise ist nur ein Unternehmen in der Klammer mit der Unternehmensbezeichnung enthalten, teils mehrere).
Auch wichtig: Die Zeilen, in denen Zusatzvertrag steht (im Beispiel nur eine), müssen auch im Sheet "Ergebnis" auf die Unternehmen folgen, unter denen sie in "Tabelle 1" stehen. Im Beispiel ist das JJ. Jetelia Mobility.
Idealerweise sollte der Lösungsweg relativ gut kopierbar sein, da die Vorlage von verschiedenen Personen genutzt werden müsste, die die Tabellen selbst erstellen sollen.