Excel VLOOKUP通过第二列使用表名称作为范围


11

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

在此处输入图片说明

Answers:


14

可以用来OFFSET返回Table1范围,但返回1列,例如

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

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


如果此处需要零件列值,则应在此处使用什么参数?
zygimantus

10

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

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

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

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


1
“不像VLOOKUP”?关于将空白单元格转换为0,其行为完全相同。
underscore_d

1
这是我INDEX MATCH使用表格看到的第一个示例。这大大提高了公式的可读性。我试图避免,OFFSET因为它是易失的Excel函数,可能会导致额外的开销处理。

2

怎么样:

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

我更喜欢这样做,以便即使在更复杂的表中也可以看到正在执行的操作,并且即使表的结构发生变化,只要Cust Part列在Demand列的前面,该公式仍然有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.