Excel VLOOKUP 按第二列使用表名作为范围

Dre*_*pin 14 vlookup microsoft-excel-2010

使用下面的示例表,我可以使用公式=VLOOKUP("ABC123456",Table1,3,FALSE)来查找Demand值,但我希望能够通过使用Cust Part字段来执行查找,而不必将该Cust Part字段设为表中的第一列。制作Cust Part第一列是不可接受的解决方案,因为我还需要使用Part字段执行查找,并且我不想使用硬编码范围(例如$B$2:$C$4)主要作为偏好问题,但也因为使用表和字段名称使公式更易于阅读。有没有办法做到这一点?

在此处输入图片说明

bar*_*ini 16

可以使用OFFSET返回 Table1 范围但超过 1 列,例如

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

这将在 CustPart 列中查找 AZ12345 并从下一列返回值

  • 如果此处需要零件列值,此处应输入什么参数? (3认同)

Dre*_*pin 11

您可以组合INDEXMATCH获得相同的结果,VLOOKUP而不会将比较限制在第一列。虽然它稍微复杂一些。

=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))
Run Code Online (Sandbox Code Playgroud)

基本上,您使用的MATCH是查找行号并INDEX获取值。

注意:与 不同VLOOKUP,如果结果是空白单元格,INDEX则将返回0而不是空白字符串。

  • 这是我看到的第一个使用表进行 INDEX MATCH 的示例。这大大提高了公式的可读性。我试图避免“OFFSET”,因为它是一个不稳定的 Excel 函数,可能会导致额外的处理开销。 (2认同)