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/……)的话,就会得出错误值 。
猜你喜欢
- excel高级筛选功能怎么使用
- Excel怎么拆分单元格方法?
- Python怎么设置Excel单元格样式?Python中如何改单元格颜色
- python字典中get函数如何使用?python字典中get()函数的基本用法
- Python可变参数*args和**kwargs如何使用?Python函数的两种参数传递的用法
- Python文件如何去重操作?如何使用代码对Python文件去重?
- Python怎么操作Excel单元格?Python如何让表格单元格居中
- 如何使用python中的lambda函数?python中lambda匿名函数详解
- 如何使用tkinter模块对窗口进行操作? tkinter模块操作窗口的简单使用方法
- Python怎么对图像加密?Python加密后的图像如何解密
