Excel VLOOKUP by second column using table name as range

It's possible to use OFFSET to return the Table1 range but 1 column over, e.g.

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

That will look up AZ12345 in the CustPart column and return the value from the next column


You can combine INDEX and MATCH to acheive the same result of VLOOKUP without the comparison being restrained to the first column. Though it is slightly more complex.

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

Basically, you're using MATCH to find the row number, and INDEX to get the value.

Note: Unlike VLOOKUP, if the result is a blank cell, INDEX will return 0 instead of a blank string.


How about something like:

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

I prefer this so that you can see what you are doing, even in more complex tables, plus if the structure of the table changes, the formula will still work, as long as the Cust Part column is in front of the Demand column.