Überprüfen Sie, ob der Zellenwert in der Spalte vorhanden ist, und ermitteln Sie dann den Wert der nächsten Zelle

89

Nachdem ich überprüft habe, ob ein Zellenwert in einer Spalte vorhanden ist, muss ich den Wert der Zelle neben der übereinstimmenden Zelle abrufen . Zum Beispiel überprüfe ich, ob der Wert in in cell A1vorhanden ist column B, und nehme an , dass er übereinstimmt B5, dann möchte ich den Wert in cell C5.

Um die erste Hälfte des Problems zu lösen, habe ich dies getan ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")

...und es hat funktioniert. Dank einer früheren Antwort auf SO konnte ich dann auch die Zeilennummer der passenden Zelle erhalten:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match on Row " & MATCH(A1,B:B, 0))

Um den Wert der nächsten Zelle zu ermitteln, habe ich natürlich versucht ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", C&MATCH(A1,B:B, 0))

... und es funktioniert nicht.

Was vermisse ich? Wie hänge ich die Spaltennummer an die zurückgegebene Zeilennummer an, um das gewünschte Ergebnis zu erzielen?

Haken
quelle

Antworten:

99

Verwenden Sie eine andere Funktion wie VLOOKUP:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))
CustomX
quelle
1
Vielen Dank! Das funktioniert auch! Und ich denke, es wäre besser, VLOOKUP(A1, B:C, 2, FALSE)einen festen Bereich zu verwenden, anstatt ihn zu verwenden (um ein wachsendes Lookup-Array aufzunehmen)?
SNag
1
Ja, ich habe diesen festen Bereich nur als Test verwendet. Bearbeitet es in meiner Antwort.
CustomX
Du brauchst IFERRORhier nicht. Ohne funktioniert es einwandfrei, da der VLOOKUP nur ausgeführt wird, wenn eine Übereinstimmung vorliegt.
SNag
Hoppla! Ich habe anscheinend in der falschen Spalte getestet: P In der Tat funktioniert es auch ohne IFERROR perfekt: P
CustomX
3
Das ist älter als alt, aber ich wollte nur sagen, dass ich das seit Jahren benutze und es nervt mich wirklich, dass Sie nie die beste Antwort erhalten haben. Ich finde es toll, dass die Tabelle für den Vergleich mehrerer Spalten skalierbar ist.
DuffDuff
36

Nach der Antwort von Thielemans habe ich das einfach gemacht

=VLOOKUP(A1, B:C, 2, FALSE) 

funktioniert gut und macht das, was ich wollte, außer dass es #N/Afür Nicht-Übereinstimmungen zurückkehrt; Daher ist es für den Fall geeignet, dass bekannt ist, dass der Wert definitiv in der Nachschlagespalte vorhanden ist.

Bearbeiten (basierend auf dem Kommentar von t.thielemans):

Um #N/ANichtübereinstimmungen zu vermeiden , gehen Sie wie folgt vor :

=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")
Haken
quelle
3
Verwenden Sie dies stattdessen IFERROR(VLOOKUP(A1, B:C, 2, FALSE),0). Ich habe dies auch zu meiner Antwort hinzugefügt. 0 ist ein beliebiger Wert, den Sie möchten :) (Wenn Sie diesen im Code verwenden, wird keine Übereinstimmung
angezeigt,
7

Wie wäre es damit?

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", INDIRECT(ADDRESS(MATCH(A1,B:B, 0), 3)))

Die "3" am Ende bedeutet für Spalte C.

Vincent Tan
quelle
2
Fantastisch! Ich habe gerade genau das versucht (basierend auf Excel: Inhalt einer Zelle mit den Zeilen- und Spaltennummern abrufen ) und wollte gerade meine eigene Frage beantworten, aber Sie haben mich geschlagen! Danke, es funktioniert super!
SNag