Die neue Formel ist etwas länger als die Originalformel, da die MID(…)
Funktion zweimal kopiert und erneut verwendet werden muss.
Geben Sie ( Ctrl+ Shift+ Enter) die folgende Formel ein F2
und fügen Sie sie in den Rest der Spalte ein:
{= TEXTJOIN( ";", TRUE, IF( ISNUMBER( --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 ) ), 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 ) )) ), TRIM( 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 ) ) ) )}
Beachten Sie, dass die Änderung in der Formel lediglich eine hinzugefügte IF()
Funktion ist, die überprüft, ob der extrahierte Wert eine Zahl oder ein Text ist, und ihn unterschiedlich verarbeitet. Ein Textwert wird so wie er ist zurückgegeben, während ein Zahlenwert verwendet wird, um eine Suche wie zuvor durchzuführen.
Die modifizierte, einfachere Formel von Excel 2016 (nur Windows) lautet:
{=TEXTJOIN(";",TRUE,IF(ISNUMBER(--FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b")),INDEX(B:B,N(IF(1,MATCH(--FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b"),A:A,0)))),FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b")))}