Excel中VLOOKUP函数的使用,当关键字不在第一列时如何处理?

26

"查找值所在的范围。请注意,为了使VLOOKUP函数正确运作,查找值应始终位于范围的第一列。例如,如果您的查找值位于单元格C2中,则您的范围应从C开始。"

但有时我希望能够进行双向查找。也就是说,使用列A中的键来查找列B中的值,并且同时在其他公式中查找B中的值以获取A中的值。

我唯一知道的方法是添加一个镜像A的列C,然后对于第一个查找使用AB,对于第二个查找使用BC。但肯定有更简洁的解决方案。是否可以强制VLOOKUP使用不同于第一列的列来查找键值,或者是否存在其他函数可以实现等效的功能?

另外,作为一个附注,我正在询问关于Excel的问题,但我实际上使用的是LibreOffice。假设这些函数应该是相同的,但是能够在LibreOffice中使用的答案会更好。


2
Index | Match - Scott Holtzman
1个回答

51
INDEX/MATCH 可以在任意搜索方向上实现此功能。
因此,对于您的示例 B --> A:
=INDEX(A:A,MATCH(yourCriteria,B:B,0))

MATCH函数返回匹配的行号。第三个准则为可选项,0与VLOOKUP的第四个准则中的FALSE相同,它寻找完全匹配。

默认情况下为1,排序后返回小于或等于标准的匹配项,就像VLOOKUP的TRUE一样。

从中,INDEX查找并返回正确的值。


随着动态数组公式XLOOKUP的引入,我们可以使用:

=XLOOKUP(yourCriteria,B:B,A:A,"",0)

非常感谢!有点棘手,但它可以工作。 :) - BrianFreud
@Scott Craner,您是否有一个类似的解决方案可用于 Excel 表格而不是范围? - David Leal
@DavidLeal 这是一个新问题,请发布一个新的问题,而不是在旧帖子上提问。 - Scott Craner
3
@ScottCraner,我使用了你的想法找到了它:INDEX(Table1[A], MATCH(yourCriteria, Table1[B],0),其中Table1是Excel表对象,AB是第一列和第二列的名称。 - David Leal
@ScottCraner 先生,非常好,可以使用 INDEX() + MATCH() 或者 **XLOOKUP()**,因为 VLOOKUP() + CHOOSE() 效率低下! - Mayukh Bhattacharya
@ScottCraner,我删除了我的回答,很抱歉我没有意识到你在回答的末尾提供了一个新的XLOOKUP Excel函数的解决方案。请接受我的道歉。 - David Leal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接