原标题:关于VLOOKUP的第一个参数,我有话要说……

原标题:关于VLOOKUP的第一个参数,我有话要说……

先上一个简单的例子,如图:

表中E2的公式该怎么写?

好吧,我再加个要求:必须用VLOOKUP!

路人甲:=VLOOKUP(D2,A:B,2,)

路人乙:=VLOOKUP(D:D,A:B,2,)

以上两个公式,结果都正确:

但是!

如果E2和E3换一下,其中一个公式的结果就不对了:

所以,正确的写法应该是路人甲的=VLOOKUP(D2,A:B,2,)

路人甲与路人乙的公式,差异在第一个参数,一个用了D2,另一个用了整D列。

关于这个参数的基本用法,在函数参数对话框里就说明得很清楚:

数字、引用或字符串,人家没说可以用数组、单元格区域,所以,查找值只能是一个。

但是函数有点这样的小脾气,绝大部分函数的参数,如果说明了只能是一个,我们不小心(gu yi)用了多个以后,这公式就摇身一变,成数组了。

比如Left函数,说好了是“从一个文本字符串的……”,第一个参数就该是一个单元格呀,可就是用了A1:A3三个单元格了,结果不仅有,而且还更高大上了。

同样的原理,是不是也可以用在VLOOKUP上?

不好意思,VLOOKUP是个异种!

VLOOKUP的第一个参数,就是一个值,如果用了多个,其结果,是一个伪内存数组。

路人乙:等下,啥叫伪内存数组?

呃……这个解释起来有点,那啥啥啥啊,要不这样吧,还是举实例,刚才那个Left数组的结果,是个内存数组,我们可以在外面再套其他函数,比如ConCat,一步到位合并三个单元格的左边那位:

而同样的手法用在VLOOKUP上,结果就……

所以,简言之,伪内存数组就是看上去长得像数组但其实其结果无意义的东东。

所~以~,路人乙的公式=VLOOKUP(D:D,A:B,2,)结果,其实是个伪内存数组。

路人乙:那为什么我的公式在特定情况下结果正确呢?

嗯,这个“特定”用得好!

这是因为结果正确的那个公式误撞到了绝对交集引用。

图文作者:小妖同学返回搜狐,查看更多

责任编辑:

文章转载自:http://www.sohu.com/a/240901690_417040
版权归原作者享有,如果侵犯了您的权益,请联系本站删除。感谢您的支持理解!