内功心法:LOOKUP函数"0/"结构详解

LOOKUP函数"0/"结构的详细解释:

众所周知,LOOKUP函数的功能非常强大,可以进行区间查找、最后一个符合条件查找、多条件查找等。

例如,下图中根据区域、品牌,查找左面表中对应的单价。

查找公式为:

= LOOKUP(1,0/((A2:A7=E2)*(B2:B7=F2)),C2:C7)

在这里使用了"0/"的结构。其实这个结构广泛应用于LOOKUP的查找公式中。

本文对这个结构进行详细的解释。

首先来看一下(A2:A7=E2)*(B2:B7=F2)运算之后的结果是什么?

在excel公式中如果:

A和B的值相等,=A=B 会返回结果True,True在四则运算中相于数字1

A和B的值不相等,=A=B 会返回结果False,False在四则运算中相于数字0

所以(A2:A7=E2)的结果是同False和True构成的一组值,如果放在单元格中,结果如下图所示:

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

由上图可以看出,相乘结果中值为1的行(G9所示),正是符合两个条件的行。那么怎么把这个1的位置提取出来呢?

Lookup函数的查找原理是二分法。按二分法原理,lookup函数会在在二分位处查找,要想准确查找到,这组值需要按升序排列,而只是公式(A2:A7=E2)*(B2:B7=F2)的结果是不符合要求的。

于是高手们想出了用0除的方法,把结果由1和0变成了由1和错误值构成的一组值。唯一符合条件的值为0,其他的均为错误值#DIV/0!

Lookup函数还有一个关键的特征,查找时可以忽略错误值,这样一组数值忽略后只剩下一个值,这时只需要使用任一个大于等于0的值查找即可。即:

= LOOKUP(1,0/((A2:A7=E2)*(B2:B7=F2)),C2:C7)

补充:0/的目的就是把符合条件的变成0,其他的变成错误值,利用lookup查找忽略错误值的特征查找到符合条件的值。

举报
评论 0