excel 函数公式:=-LOOKUP(,-ROW($3:$6)) ,

问题描述:

excel 函数公式:=-LOOKUP(,-ROW($3:$6)) ,
据excelk中LOOKUP(a,b)函数的解释是
a为在数组b中所要查找的数值,如果函数找不到 a,则使用数组b中小于或等于它的最大数值.
那么:=-LOOKUP(,-ROW($3:$6)) ,结果是6
按照上述说法,lookup的返回值应该是在{-3,-4,-5,-6}中寻找小于或等于0的最大数值,而-3最大,再加上lookup前的负号,负负得正,结果应该是3才对,可是为什么结果是6呢?
1个回答 分类:综合 2014-10-14

问题解答:

我来补答
这是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
 
 
展开全文阅读
剩余:2000
上一页:第一个解释一下
下一页:例二,求解