excel的lookup函数出错
B6:G6函数为=LOOKUP(B1,辅助百分制转换!A2:A41,辅助百分制转换!C2:C41),=LOOKUP(B1,辅助百分制转换!A2:A41,辅助百分制转换!D2:D41),递推。
B4:G4为语文 数学 英语 物理 化学 生物
运行时显示#n/a,求值时在LOOKUP(0.62,B6:G6,B4:G4)步卡住(0.62为SMALL(B6:G6,1)的值)。
请问该如何解决?
呃……能帮忙讲一下这个公式是什么意思吗? 展开
LOOKUP的运行原理分析
LOOKUP函数以高效的运算速度被EXCEL函数爱好者喜欢,而且LOOKUP在日常实际工作中特别是数组公式,内存数组中应用广泛。
LOOKUP(lookup_value,lookup_vector,result_vector)
lookup_value意思为要在数据表中查找的“值”。
lookup_vector意思为要查找的值得“数据表”。
result_vector意思为通过数据表想要得到的"值“。
LOOKUP的查询方式为二分法查询,具体的查询原理看下图。
下面用例子给大家具体讲一下LOOKUP的具体应用与原理:
以一个学生成绩表为例进行分析,查询一下英语成绩为98的学生姓名:
F2的公式为=LOOKUP(D2,B2:B15,C2:C15)
意思为从B2:B15列里面找D2,并返回C2:C15相对应行的值
这里的结果是"刘备"肯定会让好多人感到困惑,明明有98对应的是“王思”怎么会返回“刘备”呢?那么看往下看,就会彻底明白的。
对LOOKUP的查找方法进行分解——第一次二分法查询:
98会跟第7行的数据78进行比较,因为98>78,所以返回第8到第14行的值。
第二次二分法查询:
98会跟第4行的数据66进行比较,因为98>66,所以返回第5到第7行数据。
第三次二分法查询:
98会跟第2行的数据87进行比较,因为98>87所以返回第3数据。
因为98比91大,所以就向下近似取比98小的最近的值——91所对应的名字。
总结了一个知识点:
1、LOOKUP要查询一个明确的值或者范围的时候(也就是知道在查找的数据列是肯定包含被查找的值),查询列必须按照升序排列。(在EXCEL帮助文档里也是这么说的)
如果所查询值为明确的值,则返回值对应的结果行,如果没有明确的值,则向下取的于所查询值最近的值。
2、查找一个不确定的值,如查找一列数据的最后一个数值,在这种情况下,并不需呀升序排列。