excel函数LOOKUP出现的问题
图2 SHEET2
如图所示,SHEET2中有大量原始数据,现要求在SHEET2中找到SHEET1中A列【股票代码】的应付债券数据,我用的LOOKUP函数,具体如下:(CJ列为应付债券的金额)
=LOOKUP($A2,Sheet2!$A$2:$A$10,Sheet2!$CJ$2:$CJ10)
但SHEET1中B2的返回值为#N/A,求问这是怎么回事?是我SHEET1或者2中代码数据的格式不一致吗?但我已经通过【乘1】都转为数字型了啊?
函数公式应该是对的,因为还有个表SHEET3,也是从SHEET2中找数据,一样的公式,有结果。 展开
2015-10-19 · 知道合伙人软件行家
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、查找一个不确定的值,如查找一列数据的最后一个数值,在这种情况下,并不需呀升序排列。
2018-11-27 · 品牌创于1988,专注IT教育
这里是利用的技巧,查找值为1,查找区域用0来除,为空,则商为0,不为空,商为#DIV/0!,即查找区域中要么为0,要么为#DIV/0!,永远查不到1,返回最一个0所对应的值。
=LOOKUP(1,0/(Sheet2!A$2:A$10=A2),Sheet2!CJ$2:CJ10)
=index(sheet2!cj:cj,match(a2,sheet2!a:a,))
如果还是返回na检查数据前后是否有空格或其他不可见字符.
用len(a2)判断一下字个数是否和观察到的一致.
另外istext/isnumber两个函数可以检测数据类型. 看看a2和sheet2!a列值是否同型.
刚刚查了,SHEET1中代码是NUMBER,SHEET2中的是TEXT。
我现在想把SHEET1中的NUMBER换成TEXT,请问如何操作呢?
match的第一个参数改成 a2&""
2013-05-10 · 知道合伙人软件行家
点击 数据-->分列
完成
然后在sheet1的B2单元格输入公式
=vlookup(A2,sheet2!A:CJ,88,0)
下拉填充公式
广告 您可能关注的内容 |