使用下面的示例表,我可以使用公式=VLOOKUP("ABC123456",Table1,3,FALSE)
来查找Demand
值,但我希望能够使用字段执行查找,Cust Part
而不必将Cust Part
字段设为表中的第一列。将字段设为Cust Part
第一列不是一个可接受的解决方案,因为我也需要使用字段执行查找Part
,并且我不想使用硬编码范围(例如$B$2:$C$4
),这主要是出于个人喜好,也是因为使用表和字段名称使公式更易于阅读。有什么办法吗?
答案1
可以用来OFFSET
返回 Table1 范围内多 1 列的数据,例如
=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)
这将在 CustPart 列中查找 AZ12345,并返回下一列的值
答案2
您可以组合INDEX
和MATCH
来获得相同的结果,VLOOKUP
而不必将比较限制在第一列。尽管它稍微复杂一些。
=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))
基本上,您使用MATCH
它来查找行号并INDEX
获取值。
注意:与不同VLOOKUP
,如果结果是一个空白单元格,INDEX
将返回0
而不是空白字符串。
答案3
那么类似这样的情况怎么样:
=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE)
我更喜欢这样,这样即使在更复杂的表格中,您也可以看到自己正在做的事情,而且如果表格的结构发生变化,只要客户部件列位于需求列的前面,公式仍然有效。
答案4
这是作弊行为,但这是我多年前在了解任何其他解决方案之前实施的一种低俗解决方案。
我所做的是在右端创建了第四列,其内容与第一列相同。
然后我使用从第二列开始到第四列结束的子表执行了一个简单的 VLOOKUP。因此,代码很简单。
然后,如果愿意的话,您可以隐藏第四列。