使用vlookup查询数据的同学,可能经常遇到需要返回的数据在查找值左侧的情况。
比如,下图的数据表:
通过店铺名称,我们希望能匹配到对应的一级大区名称,但是大区名称数据,却是在店铺名称的左侧。
由于vlookup存在一个功能上的缺陷,那就是,返回列数据,必须要在查找值数据的右侧,函数才能正确的返回数据。
这就导致vlookup没法正常查询上表中的一级大区名称。
「不过你可以用以下3种方法来解决这个问题。」
改变原表结构。
使用数组公式改变表结构。
使用其他函数。
改变原表结构
通过改变原表结构,让返回值列在查找值列右侧就好了。
快捷调整行列顺序的方法如下:
鼠标点击B列标题,选中整个B列。
然后鼠标移动到选中的绿色边框线上,鼠标箭头变成四向移动箭头,左键点击不放,同时按住shift键不放。
最后向左拖动到合适的位置,先放开鼠标左键,再放开shift键即可移动完成。
如果是按住CTRL键,就是复制功能。
「但是」,公司有些表,TA不准改!不准改!不准改啊!
所以你可以用下面两种方法。
使用数组公式调整表结构
函数公式如下:
=VLOOKUP(E2,IF({1,0},$B$1:$B$5,$A$1:$A$5),2,0)
注意到了吗?
原本vlookup的第二个参数,我们换成了一个数组公式IF({1,0},$B$1:$B$5,$A$1:$A$5)。
如果在空白单元格直接输入这个数组公式,会的到这样的结果。
wps和office excel请按照数组公式使用方法来输入数组公式。
先选择承载数组公式结果数据的空单元格区域。
再输入数组公式。
最后按数组确认键CTRL+SHIFT+回车确认数组公式。
是不是正好是将店铺名称和大区名称互换位置了。
{1,0}是一个一维数组常量,在if函数中,1被认为是True,0就是False。
if函数会根据这个一维数组中的值,依次来判断,是1,则返回第二个参数,是0则返回第三个参数。 我们分别在第2和第3参数选上对应的数据区域,就可以实现两个数据区域的调换。
因为最终生成的vlookup查找区域,是两列数据,所以最终的返回值是在第2列,这也是为什么vlookup的第3个参数是2。
使用其他函数代替vlookup
微软早就发布了一个新查找引用函数xlookup,它比vlookup功能更强大。
函数语法如下:=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
xlookup不讲武德,直接取消了vlookup原本的查找区域包含查找值和返回值的模式。
xlookup的第一个参数是查找值,第二个参数是查找值所在数据区域,第三个参数是返回值所在区域。
所以压根不用管谁在谁的左边右边,实现公式如下:
=XLOOKUP(E2,$B$2:$B$5,$A$2:$A$5)
这个函数目前在Excel 2016及以上和WPS最新版可用。如果你目前没法使用这个函数,也可以使用index加match组合搭配来实现上面的需求。
index+match函数的查找引用公式如下:
=INDEX($A$2:$A$5,MATCH(E2,$B$2:$B$5,0))
match函数用于返回查找值在查找区域的所在行数,index会根据这个函数,返回第一个参数的数据区域中对应行数的数据。
我将持续发布vlookup函数使用过程中可能遇到的各种案例问题,如果你正遇到类似的难题,可以留言评论,说不定下期就是答案了。
赶紧转发收藏起来,以后遇到这一系列问题,就可以派上用场。