楼主 lrlxxqxa |
我们都知道lookup函数有两种形式的用法:向量形式和数组形式。前者大家都很容易清晰的理解,对于后者,屡屡遇到很多朋友在此迷惑。 如下图所示,有此问:【在第A列,虽然找不到a,但是1比a小,为什么不返回1相对应的那行的最后一个数3?而是找不到?除非将1转换为文本型才可以得出结果3.是不是表示,数字和文本不能比较大小?】 我们先来看下F1帮助中的解释: 回到原问题,分析如下: 1、首先我们可以从构成判断LOOKUP("a",A1:C4)这个公式使用的是lookup的数组形式;那么lookup将在第一行或第一列中查找指定的值,并返回数组最后一行或最后一列内同一位置的值; 2、再看A1:C4这个区域,行数多于列数,也就是说lookup会在数组区域的第一列中查找; 3、再看查找的是"a",很明显第一列中没有找到,于是接着找小于"a"的最大值,结果也没有找到,所以返回#N/A 错误。 这个公式之所以返回错误,是因为lookup的第一参数是"a"是文本类型,所以lookup就在第二参数中查找和第一参数相匹配的文本,上面说了因为第二参数数组行数大于列数,所以在第一列中的文本数据中查找,第一列是{1;b;e;i},文本数据中没有找到a也没有找到比a小的,所以返回#N/A 当把1改为文本数值1就能返回3,是因为文本1比a小,这个1也是文本类型,所以lookup能够在第一列中找到小于a的最大值也就是这个文本1,返回他对应的3. 同理,如果不改数字1为文本,只改b为1a的话,会发现lookup返回其对应的c。 lookup的疑惑.rar |
2楼 lrlxxqxa |
关于lookup的这种数组形式到底是在首行查找还是在首列查找,很多朋友都觉得不好记,我说下自己的两种土办法: 1、就是记住lookup会选择在更长的条形区域内进行查找。 比如:数组区域行数大于列数(竖高区域),那么首列会比首行长,所以lookup会在首列查找;反之行数小于列数(矮宽区域),那么首行会比首列长,所以她会在首行查找; 2、还可以利用极限的思路,行数大于列数,就把数组区域想象成无限行单列区域,当然只能在首列查找;反之想象成无限列单行区域,当然只能在首行查找; 这样,遇到实际问题时就不会再混淆了。当然有更好的记法,可以跟帖回复,一起分享下。 近期看到的同类问题还有: [函数与公式] 关于lookup函数的数组用法 http://www.exceltip.net/thread-15913-1-1.html [函数与公式] 求助LOOKUP运用问题 http://www.exceltip.net/thread-16179-1-1.html |
3楼 纵鹤擒龙水中月 |
学习了 |