Werte splitten und in mehrere Zellen verteilen
#1
Hallo zusammen,

nachdem man mir am Freitag bereits so wunderbar mit meinem Initialproblem helfen konnte, danke noch mal dafür, muss ich leider noch mal wegen eines Folgeproblems melden.

Ich habe eine Tabelle in der Spalte A eine Produkt-ID steht und eine Liste von n Tag IDs in Spalte B, Komma separiert. Diese Tag-IDs müssten gesplittet und auf weitere Spalten verteilt werden, wobei bspw. Tag ID 1 & 2 in Spalte C müssen, Tag ID 4,5,6 in Spalte D usw. Welche IDs in  welche Spalten müssen ist in der obersten Zelle der Spalte ersichtlich.
Ich habe ein Example File angehangen, dass das Problem hoffentlich gut wiedergeben kann.

Vielen Dank im Voraus.


Angehängte Dateien
.xlsx   Example.xlsx (Größe: 9,92 KB / Downloads: 24)
Antworten Top
#2
Mit der Funktion fnParseText() aus diesem Modul kannst du die einzelnen IDs extrahieren und wieder neu nach deinen Wünschen zusammen setzen.

https://www.clever-excel-forum.de/attach...?aid=53441
Antworten Top
#3
Danke erst mal für die Hilfe knobbi, aber ich fürchte, ich bin zu blöd, dein Beispiel auf meine Daten anzuwenden. Kannst du mir sagen, wie das bspw. für die Example Datei aussehen müsste? Dann kann ich mir das hoffentlich für die gesamte Datei ableiten.
Antworten Top
#4
Hi,

im Blatt Ziel in C3:

=LET(mySplit;TEXTTEILEN($B3;",");x;TEXTVERKETTEN(",";1;WENN(ISTZAHL(FINDEN(mySplit;C$1));mySplit;""));WENNFEHLER(--x;x))

und nach rechts und nach unten kopieren.
Antworten Top
#5
z.B. in "C3"

Code:
=fnParseText(B3;1;",") & "," & fnParseText(B3;2;",")
ergibt die 1. und 2. ID

siehe auch https://www.clever-excel-forum.de/Thread...#pid294363
Antworten Top
#6
Hallo Boris, danke für die Lösung, funktioniert auch beinahe perfekt. Es hakt nur dann, wenn die Tag ID auch in einem Teil der Zahl vorkommt. Also Tag ID ist 20 und in C3 steht bspw. 420, dann wird die 20 trotzdem als Match erkannt und in die Zelle geschrieben.
Antworten Top
#7
Hi,


Zitat:Es hakt nur dann, wenn die Tag ID auch in einem Teil der Zahl vorkommt. Also Tag ID ist 20 und in C3 steht bspw. 420, dann wird die 20 trotzdem als Match erkannt und in die Zelle geschrieben.

Alles eine Frage einer aussagekräftigen (praxisnahen) Beispieldatei Wink

=LET(mySplit;TEXTTEILEN($B3;",");x;TEXTVERKETTEN(",";1;WENN(ISTZAHL(FINDEN(","&mySplit&",";","&C$1&","));mySplit;""));WENNFEHLER(--x;x))
Antworten Top
#8
Hallo,

wenn du in Zelle C3 folgende Formel eingibst/kopierst:
=LET(ArrSp; $B$3:$B$12; Sp; $C$1:$F$1; Tr; ","; MATRIXERSTELLEN(ZEILEN(ArrSp); SPALTEN(Sp); LAMBDA(i;j; LET(arr; TEXTTEILEN(INDEX(ArrSp; i); Tr); Zl; NACHSPALTE(Sp; LAMBDA(pat; TEXTVERKETTEN(Tr; 1; WENN(ISTZAHL(FINDEN(arr; pat)); arr; "")))); INDEX(Zl; j)))))
erhältst du von dieser im Bereich C3:F12 das gewünschte Resultat. Du kannst sie auch an eine beliebige andere Stelle kopieren mit genügend freien Zellen fürs Resultat.
Die fett geschriebenen Zellbereiche enthalten deine Eingabewerte (gemäß deiner Datei).
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#9
Hallo,

hier eine erweiterte Funktion, bei der die gewünschten Elemente per Array angegeben werden können.
Das Default-Trennzeichen ist jetzt auf "," geändert, was den Aufwand etwas vereinfacht.

Beispiel:
Code:
' in C3:
=fnParseText2(B3;{1;2})
Das Ergebnis wäre dann: 1,4

Gruß
Knobbi38


Angehängte Dateien
.txt   modParseText2.bas.txt (Größe: 820 Bytes / Downloads: 3)
Antworten Top
#10
Das mit der Datei nehme ich natürlich auf mich, an den Fall hatte ich wirklich nicht gedacht.
Aber irgendwas scheint mit deiner zweiiten Formel kaputt gegangen zu sein Boris, sie ordnet keine Werte mehr zu, wenn mehr als 1 Tag zu einer ID gehören. Kannst du da evtl. noch mal schauen?

Danke und Gruß.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste