设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel函数公式] Lookup函数“0/”结构的详细剖析

[复制链接]
跳转到指定楼层
楼主
发表于 2016-1-7 02:25:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

                        Lookup函数功能很强大,它可以区间查找、最后一个符合条件查找、多条件查找等。
        【例】在G4中设置公式,根据G2的入库时间和G3的产品名称,从左表中查找对应的入库单价。
       

        G2公式:
        =LOOKUP(1,0/((B3:B8=G2)*(C3:C8=G3)),D3:D8)
        有很多同学提问,为什么要用0/的结构?其实该结构广泛应用于lookup查找公式中,为了帮助同学们理解以便能灵活应用。今天就此进行详细的剖析:
        首先,先看看(B3:B8=G2)*(C3:C8=G3)运算后是什么个结果?
        在excel公式中如果:
        A和B的值相等,=A=B 会返回结果True,True在四则运算中相于数字1
        A和B的值不相等,=A=B 会返回结果False,False在四则运算中相于数字0
        所以(B3:B8=G2)的结果是由false和true构成的一组值,如果放在单元格中,结果如F7:F12区域值所示:
       

        同样(C3:C8=G3)的结果也是由True和Fasle组成的一组数值,而2个相同大小的一组值相乘,True*True=1,True*False=0,False*False=0,相乘的最终结果是由1和0组成的一组数。如下图 H7:H12 所示。
       

        由上图可以看出,相乘结果中值为1的行(H9所示),正是符合两个条件的行。那么怎么把这个1的位置提取出来呢?
        Lookup函数的查找原理是二分法。按二分法原理,lookup函数会在在二分位处查找,要想准确查找到,这组值需要按升序排列,而只是公式(B3:B8=G2)*(C3:C8=G3)的结果是不符合要求的。
        于是高手们想出了用0除的方法,把结果由1和0变成了由1和错误值构成的一组值。唯一符合条件的值为0,其他的均为错误值#DIV/0!
       

        Lookup函数还有一个关键的特征,查找时可以忽略错误值,这样一组数值忽略后只剩下一个值,这时只需要使用任一个大于等于0的值查找即可。即:
        =LOOKUP(1,0/((B3:B8=G2)*(C3:C8=G3)),D3:D8)
        补充:0/的目的就是把符合条件的变成0,其他的变成错误值,利用lookup查找忽略错误值的特征查找到符合条件的值。
               
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-16 04:48 , Processed in 0.175875 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表