Zulassen, dass eine Zelle, die mehrere getrennte Lookup-Quellwerte enthält, auch Nicht-Lookup-Werte enthält

392
Lucio

Suchen Sie nach mehreren Werten in einer anderen Tabelle, wenn Sie eine Zelle mit mehreren durch Trennzeichen getrennten Werten verwenden

Bitte öffnen Sie den Link, um die zuvor beantwortete Frage zu sehen.

Gibt es in diesem Kontext eine Formel, die einen Textwert direkt in der Spalte zurückgeben kann, Eanstatt die Suche durchzuführen?

Wenn die Spalte Eeine Mischung aus Zahlen und Textwerten enthält, kann die Formel sowohl den mit der Nummer verknüpften Namen über eine Suche als auch den Textwert direkt zurückgeben?

Beispiel:

E3enthält 2;3;JohnnyF3FormelergebnisB;C;Johnny

Zulassen, dass eine Zelle, die mehrere getrennte Lookup-Quellwerte enthält, auch Nicht-Lookup-Werte enthält

1

1 Antwort auf die Frage

2
robinCTS

Die neue Formel ist etwas länger als die Originalformel, da die MID(…)Funktion zweimal kopiert und erneut verwendet werden muss.

Arbeitsblatt-Screenshot

Geben Sie ( Ctrl+ Shift+ Enter) die folgende Formel ein F2und 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")))} 
Held. Funktioniert wunderbar. Lucio vor 5 Jahren 0
@Lucio Nun, da Sie über 15 Ansehen haben, vergessen Sie nicht, auch die Antwort zu bestätigen ;-) (Und alle funktionierenden / nützlichen Antworten auf Ihre vorherigen und zukünftigen Fragen.) robinCTS vor 5 Jahren 0