2017-09-05 3 views
1

Ich verstehe die grundlegende Verwendung der vlookup mit Platzhalter, aber ich stehe in letzter Zeit ein Problem.Vlookup mit Platzhalter funktioniert nicht (Teilzeichenfolge) auf lange Werte

Ich muss einen Wert suchen, der in einer Zelle als Teil der Zeichenfolge enthalten ist. Im folgenden Beispiel schaue ich colA in der Spalte an, mit sollte gefunden werden, dann gebe die Werte in col D in col B zurück.

Ich verwende =VLOOKUP("*"&A1&"*",C$1:D$2,2,0), und es funktioniert nur für B1.

Warum funktioniert B2 & B3 nicht auf die gleiche Weise? Irgendeine Lösungsmöglichkeit?

Probe:

Sample

+0

Ich habe festgestellt, dass wenn ich die Nummern nach C335 in Zelle C2 lösche , dann funktioniert die Funktion. Ich weiß wirklich nicht warum. – Luke

+0

Soweit ich weiß, ist es nicht dokumentiert, aber weder der 'lookup_value' noch die Einzelzellenwerte innerhalb des' lookup_array' dürfen länger als 255 Zeichen sein. Dies bezieht sich auf '* LOOKUP 'und auch auf' MATCH '. –

+0

Zusätzlich zu der Formel, die auf langen Strings nicht funktioniert, auch bei kürzeren Strings, gibt Ihre Formel ein Ergebnis für teilweise Übereinstimmungen zurück. In Ihrem Beispiel, wenn 'A1: = R7', gibt dies auch 'a' zurück –

Antwort

0

Wie pro Ihre Untersuchung und Kommentierung durch Axel, hat VLOOKUP nicht mit Werten über 255 Zeichen lang arbeiten. Eine Problemumgehung verwenden Sie eine Matrixformel mit der Funktion SUCHEN, die viel längere Werte behandelt. Klicken Sie doppelt in die Zelle B1 und diese Formel einfügen, dann durch CTRL Drücken speichern + SHIFT + ENTER statt nur von sich selbst durch Drücken der Eingabetaste:

=INDEX($D$1:$D$2,MATCH(TRUE,ISNUMBER(SEARCH(A1&",",$C$1:$C$2&",")),0)) 

Wenn Sie es korrekt eingegeben haben, zeigt die Zelle Auswahl von {geschweiften Klammern} um die Formel herum und es sollte zu Ihrem gewünschten Ergebnis auswerten.

Diese Formel erstellt zuerst ein Array, das in jeder Zelle in C1: C2 nach der Position von A1 sucht. Das Array besteht aus Zahlen (wenn A1 gefunden wird) und Fehlern (wenn A1 nicht gefunden wird).

ISNUMBER erzeugt dann ein Feld von TRUE (A1, wenn festgestellt wird), und FALSE (wenn A1 nicht gefunden wird)

Übereinstimmung findet dann den ersten TRUE-Wert in dem Array.

INDEX gibt dann den entsprechenden Wert von D1: D2 zurück.

Bearbeiten: Die Formel suchte nun nach dem Wert in A1, gefolgt von einem Komma. Dies stellt sicher, dass eine genaue Übereinstimmung hergestellt wird. Um sicherzustellen, dass die Formel mit dem letzten Wert in einer beliebigen Zelle in Spalte C übereinstimmt, wird auch ein Komma am Ende der Werte in Spalte C hinzugefügt.

+1

Beachten Sie, dass mit Ihrer Formel und den vom OP geposteten Daten ein Eintrag wie "C1" in Spalte "A" das Ergebnis in "D" zurückgibt. –

+0

Danke für dich Hilfe Michael, und deine Erklärung ist auch klar. Nachdem ich deine Formel ausprobiert habe, hat es gut funktioniert. Da jedoch Rons erster Kommentar meine Aufmerksamkeit auf sich zog, stellte ich fest, dass die Formel eine teilweise Übereinstimmung zurückgibt, zum Beispiel, wenn ich A1: = R7 ändere, gibt sie immer noch a zurück. Gibt es eine Möglichkeit, genau zu entsprechen? – Luke

+0

Hallo Luke, ich habe die Formel aktualisiert, um auch ein Komma nach dem Wert in Spalte A zu finden.Beachten Sie, dass die Daten in Spalte C nicht in ein Komma enden müssen, da dies auch in der Formel behandelt wird. Die einzige Voraussetzung ist, dass jeder Wert in Spalte C in einem Komma endet (mit Ausnahme des letzten Werts in jeder Zelle). Es spielt keine Rolle, ob hinter dem Komma ein Leerzeichen steht, aber vor dem Komma darf kein Leerzeichen stehen. – Michael

Verwandte Themen