如果您一直在使用 VLOOKUP 或 INDEX/MATCH,我相信您会喜欢 XLOOKUP 功能提供的灵活性。
什么是 XLOOKUP?
XLOOKUP 是 Office 365 的新功能,是VLOOKUP / HLOOKUP功能的新改进版本。它完成了 VLOOKUP 过去所做的一切,甚至更多。
XLOOKUP 是一个函数,可让您快速查找数据集中的值(垂直或水平)并在其他行/列中返回相应的值。例如,如果您获得了学生在考试中的分数,则可以使用 XLOOKUP 使用学生的姓名快速检查学生的得分。
XLOOKUP 函数语法
=XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode])
XLOOKUP 函数可以记录 6 个参数(3 个强制参数和 3 个可选参数):
lookup_value – 您要查找的值
lookup_array – 您要在其中查找查找值的数组
return_array – 您要从中获取并返回值的数组(对应于找到查找值的位置)
[if_not_found] – 在未找到查找值的情况下返回的值。如果您不指定此参数,则会返回 #N/A 错误
[match_mode] - 您可以在此处指定所需的匹配类型:
0 – 完全匹配,其中lookup_value 应与lookup_array 中的值完全匹配。这是默认选项。
-1 – 查找完全匹配,但如果找到,则返回下一个较小的项/值
1 – 查找完全匹配,但如果找到,则返回下一个较大的项目/值
2 – 使用通配符(* 或 ~)进行部分匹配
6. [search_mode] –在这里您指定 XLOOKUP 函数应如何搜索 lookup_array
1 – 这是默认选项,函数开始在lookup_array 中从顶部(第一项)到底部(最后一项)查找lookup_value
-1 – 从下到上搜索。当您想在 lookup_array 中找到最后一个匹配值时很有用
2 –执行二进制搜索,其中数据需要按升序排序。如果未排序,这可能会产生错误或错误的结果
-2 - 执行二进制搜索,其中数据需要按降序排序。如果未排序,这可能会产生错误或错误的结果
XLOOKUP 函数获取查找值
执行此操作的公式:=XLOOKUP(F2,A2:A15,B2:B15)

在上面的公式中,我刚刚使用了强制参数,它查找名称(从上到下),找到完全匹配,并从 B2:B15 返回相应的值。
将lookup_array 和return_array 作为单独的参数的一个直接好处是现在您可以向左看。VLOOKUP 有这个限制,您只能查找并找到右侧的值。但是有了 XLOOKUP,这个限制就消失了。
这是一个例子。我有相同的数据集,其中名称在右侧,return_range 在左侧。

下面是我可以用来在数学中获得 Greg 分数的公式(这意味着查看 lookup_value 的左侧)
=XLOOKUP(F2,D2:D15,A2:A15)

使用 XLOOKUP 的双向查找(水平和垂直查找)
下面是一个数据集,我想知道 Greg 在数学中的分数(单元格 G2 中的主题)。
这可以使用双向查找来完成,我在 A 列中查找名称,在第 1 行中查找主题名称。这种双向查找的好处是结果与主题名称的学生姓名无关。如果我将主题名称更改为化学,这个双向 XLOOKUP 公式仍然可以工作并给我正确的结果。
下面是执行双向查找并给出正确结果的公式:
=XLOOKUP(G1,B1:D1,XLOOKUP(F2,A2:A15,B2:D15))

这个公式使用嵌套的 XLOOKUP,首先我使用它来获取单元格 F2 中学生的所有分数。
所以 XLOOKUP(F2,A2:A15,B2:D15) 的结果是 {21,94,81},在这种情况下是 Greg 打分的数组。
然后在外部 XLOOKUP 公式中再次使用它作为返回数组。在外部 XLOOKUP 公式中,我查找主题名称(位于单元格 G1 中),查找数组为 B1:D1。
如果主题名称是 Math,则此外部 XLOOKUP 公式从返回数组中获取第一个值 - 在此示例中为 {21,94,81}。
这与迄今为止使用INDEX 和 MATCH 组合实现的效果相同