Excel VLOOKUP nach zweiter Spalte unter Verwendung des Tabellennamens als Bereich

11

Anhand der folgenden Beispieltabelle kann ich die Formel verwenden, =VLOOKUP("ABC123456",Table1,3,FALSE)um den DemandWert nachzuschlagen. Ich möchte jedoch in der Lage sein, die Suche mithilfe des Cust PartFelds durchzuführen, ohne das Cust PartFeld zur ersten Spalte in der Tabelle machen zu müssen. Das Erstellen Cust Partder ersten Spalte ist keine akzeptable Lösung, da ich auch Suchvorgänge über das PartFeld durchführen muss und keine fest codierten Bereiche (z. B. $B$2:$C$4) verwenden möchte, hauptsächlich aus Gründen der Präferenz, sondern auch, weil Tabelle und Feld verwendet werden Namen erleichtern das Lesen der Formel. Gibt es eine Möglichkeit, dies zu tun?

Geben Sie hier die Bildbeschreibung ein

Drew Chapin
quelle

Antworten:

14

Es ist möglich, OFFSETden Table1-Bereich zurückzugeben, jedoch über 1 Spalte, z

=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)

Dadurch wird AZ12345 in der Spalte CustPart nachgeschlagen und der Wert aus der nächsten Spalte zurückgegeben

Barry Houdini
quelle
Welcher Parameter sollte hier sein, wenn hier ein Teilespaltenwert benötigt wird?
Zygimantus
10

Sie können das gleiche Ergebnis kombinieren INDEXund MATCHerzielen, VLOOKUPohne dass der Vergleich auf die erste Spalte beschränkt bleibt . Obwohl es etwas komplexer ist.

=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))

Grundsätzlich verwenden Sie MATCH, um die Zeilennummer zu finden und INDEXden Wert zu erhalten.

Hinweis: Im Gegensatz dazu VLOOKUP, wenn das Ergebnis eine leere Zelle ist, INDEXwird 0anstelle einer leeren Zeichenfolge zurückgegeben.

Drew Chapin
quelle
1
"Anders als VLOOKUP"? Es verhält sich genauso, wenn leere Zellen in Nullen übersetzt werden.
underscore_d
1
Dies ist das erste Beispiel, das ich bei der INDEX MATCHVerwendung einer Tabelle gesehen habe. Dies verbessert die Lesbarkeit der Formel erheblich. Ich habe versucht, dies zu vermeiden, OFFSETda es sich um eine flüchtige Excel-Funktion handelt, die zu einer zusätzlichen Overhead-Verarbeitung führen kann.
Ben
2

Wie wäre es mit so etwas wie:

=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE) 

Ich bevorzuge dies, damit Sie sehen können, was Sie tun, auch in komplexeren Tabellen. Wenn sich die Struktur der Tabelle ändert, funktioniert die Formel weiterhin, solange sich die Spalte Cust Part vor der Spalte Demand befindet.

Peter
quelle