这是lookup的查找原理,你可以去搜搜关于lookup二分法方面的资料
简单的着这么说吧节点的位置,决定了向左还是向右查找
比如=lookup(5,{100,5,-1000})和=lookup(5,{100,5,-1000,0})
无论两头的数字是多少,永远返回5,因为中点是第一个查找的位置(偶数个数为(1+4)/2取整位置为第一个计算节点)
就你的例子=lookup(0,{-3,-4,-5,-6})第一步以-4为节点,由于0大于-4,往右查找-5和-6,两个数字节点为(1+2)/2取整=1,-5为节点,继续往右,直到最后一个小于0的数值返回。如果是=lookup(0,{-3,-4,-5,6})会返回-5,因为当判断到6为节点的时候,0小于6,会往回查找,因为第一个节点的右边存在小于等于0的数字。
因此=LOOKUP(0,{-3,4,-5,6})会返回-3,因此第一个节点4大于0,所以往左查找到-3,但是
=LOOKUP(0,{3,4,-5,6})会返回错误值,当查找到最左边的3任然找不到小于等于0的数字,会返回错误值,而不会再向右查找。
节点的位置的右边是否小于等于查找值的数值,决定了是否返回错误值,
例如
=LOOKUP(4,{9;4;1;6;5;4;2;3;1})会返回4,只要大于5的数字,均会返回1,但是小于4的数字,均会是错误值,因为第一次查找以5为节点,会在左边的9,4,1,6中找,第二次以4为节点,只剩下一个9,而小于4的数字,肯定都是小于9的,返回错误值
关于你的另外一个提问=LOOKUP(-2.5,{-1,-2,-3})为什么返回错误值,也是这个道理,-2.5<-2,向左查找,-1仍然大于-2.5,返回错误值,你把-1改成-10,就会返回-10了。
所以=LOOKUP(-2.5,{-1,-2,-3})这个公式,当中间为-2时,右边的-3,无论你填什么数字,对结果都没有影响,而左边的-1是否小于等于-2.5,决定了返回错误值,还是返回左边这个数
PS: 以上不是本人劳动成果,觉得讲得比较清楚,明了,所以就发上来共享。 |