分享

VLOOKUP,想说爱你不容易

 老来乐64 2018-12-08

大家好啊,我是30天精学班第9期的班长,叫小不点儿,喜欢自称“小白”。

在30天精学Excel培训班一个月的时间,小不点学到了不少的知识,也结识了好多的小伙伴。

今天我要做个学习汇报,和大家一起分享一下VLOOKUP函数逆向查询的那点事儿。

工作中,逆向查询的问题有不少,像下面的数据源:


现在需要根据姓名查询对应的部门:

看到这样的题目要求,大家一定都不陌生,如果我们对函数比较熟悉的话,会有N多种方法浮现在眼前:

方法一:

=INDEX($A$2:$A$9,MATCH(D2,$B$2:$B$9,))

方法二:

=LOOKUP(1,0/($B$2:$B$9=D2),$A$2:$A$9)

方法三:

=OFFSET($A$1,MATCH(D2,$B$2:$B$9,),)

……

关于逆向查找,其实VLOOKUP也可以做到哦。

一般情况下,VLOOKUP函数要求查询值要处于查询区域的左侧列。

但是本例中,查询值姓名,是处于查询区域的右侧了。

这时候,就需要借助IF函数来帮忙了。

用到的公式是:

=VLOOKUP(D2,IF({1,0},$B$1:$B$9,$A$1:$A$9),2,)

IF函数在这里构建一个内存数组,作为VLOOKUP的第二参数,使其能够顺利达到查询目的。

我们知道,如果IF函数的第一个参数是非0数值,就返回第二个参数,

如果IF函数的第一个参数是0,就返回第三个参数。

本例中的IF({1,0},B1:B9,A1:A9)部分,{1,0}是一个两列的横向水平数组,如果是1,则返回B1:B9;如果是0,则返回A1:A9。

因此返回一个数组结果:

{ B1:B9,A1:A9}

也就是姓名在前,职务在后的这样一个内存数组。

VLOOKUP函数本来无法实现从右向左查询,而变换后的数组把查找值姓名置换到了左侧,就能使用VLOOKUP查询了。

不知道这样解释,大家是否能理解呢?


还有一种公式,也能完成将引用区域前后置换的目的。

=VLOOKUP(D2,CHOOSE({1,2},$B$1:$B$9,$A$1:$A$9),2,)

与IF函数相比,CHOOSE变换更简单、灵活。

CHOOSE在英文里是选择的意思。

第一个参数选择1,就取第一参数后面的第一个参数$B$1:$B$9

第一个参数选择2,就取第一参数后面的第二个参数$A$1:$A$9

其作用也是将B列的姓名和A列的职务区域区域进行调整互换。


通过IF函数或是CHOOSE函数,对VLOOKUP函数的查询区域进行重新处理,使其符合查询值位于查询区域首列这样一个潜规则,就实现了咱们的查询目的。


逆向查询,方法多多,有道是条条大路通罗马,具体用哪个,就看咱们的心情啦。


作者:精学班第9期班长 小不点

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多