Hier ist eine Formel, die auch in Excel 2016 funktioniert. In früheren Versionen von Excel ist eine UDF mit Poly-Fill TEXTJOIN()
erforderlich. (In diesem Beitrag finden Sie einen grundlegenden Beitrag .)
Geben Sie ( Ctrl+ Shift+ Enter) die folgende Formel ein F2
und fügen Sie sie in den Rest der Spalte ein:
{=TEXTJOIN(";",TRUE,INDEX(B:B,N(IF(1,MATCH(--MID(SUBSTITUTE(E2,";",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))-1)*99+((ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1)))=1),99),A:A,0)))))}
Beachten Sie, dass diese Formel nur funktioniert, wenn die Werte in der Spalte A
tatsächlich als Zahlen gespeichert sind. Bei Textwerten muss die --MID(…)
in der Formel durch ersetzt werden TRIM(MID(…))
.
Die verettete Formel lautet wie folgt:
{= TEXTJOIN( ";", TRUE, INDEX( (B:B), N(IF(1, MATCH( --MID( SUBSTITUTE(E2,";",REPT(" ",99)), 99*(ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))-1) +(1=ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))), 99 ), (A:A), 0 ) )) ) )}
Anmerkungen:
- Die verettete Formel funktioniert tatsächlich, wenn sie eingegeben wird.
- Die Klammern
(A:A)
in der veretteten Version müssen zwingenA:A
, dass sie auf ihrer eigenen Linie bleiben. Gleiches gilt für die(B:B)
.
Für Excel 2016 (nur Windows) sollte die folgende einfachere Formel funktionieren:
{=TEXTJOIN(";",TRUE,INDEX(B:B,N(IF(1,MATCH(--FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b"),A:A,0)))))}
Wie die vorige Formel funktioniert auch diese nur mit Werten, die als Zahlen gespeichert sind. Entfernen Sie für Textwerte einfach die --
aus der Formel.