分享

想用VLOOKUP函数实现逆序查找?这个方法怎么能不知道

 Excel实用知识 2022-07-02 发布于广东
大家好,我是雅客。

Vlookup函数虽然强大,但也有它的弊端所在,比如原生的VLookup函数不支持逆序查找,这就导致如果我们需要实现从左往右的查找,并不能直接通过VLOOKUP函数来实现。

但通过我们前面给大家介绍过的数组函数,两者相互结合,却能实现非凡的效果,我们一起来看下怎么操作吧!

01
案例背景

下面是我们的财务报表,现在如果我们要根据上期余额,查找出对应的科目,通过Vlookup函数来计算,系统就是提示错误。

图片

因为它违背了Vlookup函数的使用条件:查找的值,必须在查找范围的第一列。

但我们可以看到,查找的值,上期余额是在查找范围内的最后一列,所以如果我们硬要用VLookup函数去查找,就会提示错误。

图片

02
解决路径

既然不能逆序查找,我们就可以想办法,将这两列的数值位置进行调换。

怎么转换呢?前面我们就提到了一种方法,就是通过CHOOSE函数与VLOOKUP函数结合,利用Choose函数可以选择返回的区域的效果来调换位置。

另外一种方法,就是我们今天要提到的,通过IF函数来实现转换。

1、IF函数的运用原理

在企图用IF函数来实现位置调换的时候,我们需要理解IF函数使用的原理,哪怕我们以为对IF已经非常熟悉了。

IF函数的表达式为:IF(判断条件、条件成立返回值,条件不成立返回值)

比如下面这个案例:根据国家规定,2020年男性退休年龄为60岁,女性退休年龄为50岁。

图片

我们在公式栏当中录入函数公式:=IF(B15='男',60,50)

这个公式表示:判断B15单元格的值是否是男,如果是男,那么就显示为True,如果是True,那么就返回条件成立返回的值60.

如果是FALSE,那么就返回条件不成立返回的值50.

所以B16单元格的公式第一步运算后的结果就是:=IF(TRUE,60,50)

图片

C16单元格第一步运算后的结果就是:=IF(FALSE,60,50)

图片

在Excel当中,还有一个潜规则,Ture可以用1表示,False可以用0表示。

所以上面两个公式,又可以写为:

=IF(1,60,50)
=IF(0,60,50)

但是,IF函数不仅可以返回1个单元格的值,也可以返回多个单元格的值。

=IF({1,0},60,50),结果返回60
=IF({0,1},60,50),结果返回50

图片

所以在这其中,我们不难发现,1和0的两个数字的位置,能够影响结果返回的值。

如果1在前面,那么就返回第二个参数;
如果1在后面,那么就返回第三个参数;

利用这个规律,我们就可以解决Vlookup函数不支持逆序查找的问题了。

2、VLOOKUP逆序查找

我们在G3单元格录入函数公式:=VLOOKUP(F3,IF({1,0},D3:D9,C3:C9),2,0)

图片

录入完公式后,记得按Ctrl+SHIFT+ENTER三个按键进行确认,因为这是数组函数。

我们将公式拆开来看,就是下面这样的。

=VLOOKUP(F3,{999,'现金';123,'银行存款';445,'建设银行';245,'保证金账户';633,'应收账款';234,'其他应收款';562,'固定资产'},2,0)

图片

其中中间的'现金';123,'银行存款';445,'建设银行';245,'保证金账户';633,'应收账款';234,'其他应收款';562,'固定资产“

你可以把它理解为,就是两列数据,一列是科目,一列是上期余额,科目排在前面,上期余额排在后面。

而函数公式当中的:IF({1,0},D3:D9,C3:C9)

这一部分则表示,将D3到D9和C3到C9两列的位置进行调换。

D3和D9原本是排在后面的,现在显示到前面,C3和C9原本是在表格前面的,现在显示到后面。

通过这两列数据进行位置的调换,那么剩下的就可以按照Vlookup函数的方式,进行数据的查找了。

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多