Excle如何使用vlookup?

LOOKUP是一个充满了套路的函数,同时也是一个很强大很实用的函数,之前涉及到这个函数的教程估计能有几十篇。但是,关于这个函数,有一个提问率很高的问题始终没有说的太明白,就是LOOKUP(1,0/……)这个套路中的1和0/到底该怎么理解。例如这个公式=LOOKUP(1,0/((F2=$A$2:$A$13)*(G2=$B$2:$B$13)),$C$2:$C$13)中就有(1,0/……),今天单独来解释这个问题。

其实公式中的1就表示数字1,0就表示数字0,仅此而已。

这和VLOOKUP(A1,IF({1,0},B:B,A:A),2,0)中的1和0完全不同(想了解vlookup中的1和0是怎么回事可以留言,咱们下次解释)。

LOOKUP(1,0/……)中的关键部分是0/……这部分,咱们结合示例来看。

这个例子是一个多条件匹配的问题,按照姓名和品名匹配对应的销售数量。

注意0/后面是两个比较运算相乘,(F2=$A$2:$A$13)*(G2=$B$2:$B$13)中左边的部分是以姓名作为判断条件,右边的部分是以品名作为判断条件。

F2=$A$2:$A$13的结果是一组由FALSE和TRUE构成的数组。$A$2:$A$13中只有两个姓名与F2(侯启龙)一致,显示为TRUE,其他的都是FALSE。

G2=$B$2:$B$13的结果同样,与G2(空调)对应的都是TRUE,其他的都是FALSE。

两组逻辑值相乘的时候,TRUE=1,FALSE=0,按照这个规则得到的结果是一组1和0。

为了让大家看明白这个结果,我把两组逻辑值并排列出来,只有上下同时为TRUE的,结果才是1,否则都是0,这个大家应该都明白。

{FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}

{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}

不难看出,只有第二个位置上满足条件,至此,我们解释了0/后面的这一堆{0;1;0;0;0;0;0;0;0;0;0;0}是怎么来的。

这一连串的计算只是做了将条件转为逻辑值,再将逻辑值转为数字的过程。接下来再说0/,这里面的/就是除法,其实不用0/也行,用1/,2/,3/,0.5/都行,只是得到的结果不同。

0/得到一组包含错误值的数据,其中只有一个数字0。

用其他的数字也是一样的道理,比如我们用3/,得到的就是这样的结果。

搞清楚了数字的作用,再来看/。至于/能不能用别的,还是建议用除法,因为分母是一组由1和0构成的数组,其中的1对应的是满足我们设定条件的结果,0都是不需要的,只有分母为0才能得到错误值,因此这里推荐用/。

再来梳理一下,先通过比较运算把条件转换成逻辑值,再利用逻辑值计算把条件变成数字,最后用除法把不需要的内容变成错误值,需要的内容变成一个数字,这个数字的具体表示取决于分母,用0只是一种约定俗成的习惯,这就是0/((条件1=条件区域1)*(条件2=条件区域2))这个套路的原理。如果还有其他条件,增加分母的比较运算就可以了,只是要注意括号别放错位置。

最后就剩这个1是什么意思了,开头就说了,1就是数字1。如果用的0/,那么就可以用1,如果用的1/,数字1就要换成不小于1的数,例如2。

也就是说,LOOKUP(1,0/……)中的1和0,都是可以换成其他数字的,只要前面的数字不小于分母的数字即可,如果你用LOOKUP(1,2/……)的话,就会得出错误值。

至于为什么会这样,在官方的函数解释中说的明白:

§如果 LOOKUP 函数找不到 lookup_value,则该函数会与 lookup_vector 中小于或等于 lookup_value 的最大值进行匹配。

§如果 lookup_value 小于 lookup_vector 中的最小值,则 LOOKUP 会返回 #N/A 错误值。

office办公软件入门基础教程 » Excle如何使用vlookup?

本文链接:【Excle如何使用vlookup?】https://www.officeapi.cn/119149.html

OFFICE,天天学一点,进步多一点

联系我们