vlookup这个缺点,只需要用个数组公式,就能轻松实现反向查询

如题所述

第1个回答  2022-07-30

使用vlookup查询数据的同学,可能经常遇到需要返回的数据在查找值左侧的情况。

比如,下图的数据表:

通过店铺名称,我们希望能匹配到对应的一级大区名称,但是大区名称数据,却是在店铺名称的左侧。

由于vlookup存在一个功能上的缺陷,那就是,返回列数据,必须要在查找值数据的右侧,函数才能正确的返回数据。

这就导致vlookup没法正常查询上表中的一级大区名称。

「不过你可以用以下3种方法来解决这个问题。」

通过改变原表结构,让返回值列在查找值列右侧就好了。

快捷调整行列顺序的方法如下:

鼠标点击B列标题,选中整个B列。

然后鼠标移动到选中的绿色边框线上,鼠标箭头变成四向移动箭头,左键点击不放,同时按住shift键不放。

最后向左拖动到合适的位置,先放开鼠标左键,再放开shift键即可移动完成。

「但是」 ,公司有些表,TA不准改!不准改!不准改啊!

所以你可以用下面两种方法。

函数公式如下:

注意到了吗?

原本vlookup的第二个参数,我们换成了一个数组公式 IF({1,0},$B$1:$B$5,$A$1:$A$5)

如果在空白单元格直接输入这个数组公式,会的到这样的结果。

是不是正好是将店铺名称和大区名称互换位置了。

{1,0} 是一个一维数组常量,在if函数中,1被认为是True,0就是False。

if函数会根据这个一维数组中的值,依次来判断,是1,则返回第二个参数,是0则返回第三个参数。 我们分别在第2和第3参数选上对应的数据区域,就可以实现两个数据区域的调换。

因为最终生成的vlookup查找区域,是两列数据,所以最终的返回值是在第2列,这也是为什么vlookup的第3个参数是2。

微软早就发布了一个新查找引用函数xlookup,它比vlookup功能更强大。

函数语法如下: =XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])

xlookup不讲武德,直接取消了vlookup原本的查找区域包含查找值和返回值的模式。

xlookup的第一个参数是查找值,第二个参数是查找值所在数据区域,第三个参数是返回值所在区域。

所以压根不用管谁在谁的左边右边,实现公式如下:

这个函数目前在Excel 2016及以上和WPS最新版可用。如果你目前没法使用这个函数,也可以使用index加match组合搭配来实现上面的需求。

index+match函数的查找引用公式如下:

match函数用于返回查找值在查找区域的所在行数,index会根据这个函数,返回第一个参数的数据区域中对应行数的数据。

我将持续发布vlookup函数使用过程中可能遇到的各种案例问题,如果你正遇到类似的难题,可以留言评论,说不定下期就是答案了。

赶紧转发收藏起来,以后遇到这一系列问题,就可以派上用场。