今天说说lookup函数的另一个很实用的应用 。
实际工作中我们经常遇到查找最后出现的记录 , 如下面的问题(要查找产品AC1最后一次采购日期 , 其中B列是按升续排序的)
文章插图
我们在G3单元格中输入产品的名称AC1 , 然后在H3输入公式是=LOOKUP(1,0/(A2:A13=G3),B2:B13)
文章插图
公式解析如下
1、(A2:A13=G3)这部分是判断在A2:A13产品名称区域中 , 有那几个产品名称是等于AC1的 , 观察我们可以发现有以下几个是为AC1的 , 共有三处 。即这三处会得到一个TRUE、其他都是False 。
文章插图
2、而不不是AC1产品的 , 只会False 。所以(A2:A13=G3)得到的数据会是{FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
图示法:
【lookup函数的实际应用,查找最后一次采购日期】
文章插图
3、而0/(A2:A13=G3)就是相当于用0分别去除上面的
{FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
在计算机里面 , true就是对的意思 , 相当于1 。而false就是错的意思 , 相当于0 。而我们知道0/0是一个错误值 , 而0/1=0.所以上面的除了之后得到的结果是
{#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!}
图示法:
文章插图
可以看到上面只有三个是0(标红色)其他都是错误值 。在lookup函数中 , 错误值是会被忽略的 。所以上面的一大串数据在lookup函数中只会是
(“ ” 表示空值){“”;0;“”;“”;“”;0;“”;“”;“”;0;“”;“”}
图示法:
文章插图
上面每个;表示的是区分位置的 , 总共有12个值 , 三个0和9个空值 , 跟第三个参数B2:B13(也就是日期部分区域)是一 一对应的 , 有多少个日期上面的就有多少个位置 。
4、然后我们上面公式的第一个参数是1 , 也就是我们用1去{“”;0;“”;“”;“”;0;“”;“”;“”;0;“”;“”}这部分区域去找等于或者最接近且小于的位置 , 按照lookup函数的二分法 , 会首先去找到等于1的 , 显然没有 , 然后就找最接近且小于的1的位置 , 因为上面的0 , 都是满足小于且最接近 , 又因为Lookup函数默认你是按升序排列的 , 所以会死脑筋的一直往下找到最后一个0的位置 , 此时我们算一下是第10个位置满足 , 于是lookup函数就返回B2:B13这里的第10个位置 , 也就是B11(建议你手指的数一数) , 所以最后结果就是得到B11单元格的值也就是2019-1-11
图示法:
文章插图
以上就是这个公式的解析 。
最后强调 , 这里我们的产品名称是不需要要求按升序排序 , 但是日期B列是要求按日期排序的 , 因为我们是要找最后的采购日期 。
推荐阅读
- September的缩写是Sept还是Sep?
- 一男生对我说:你是我的梦想。啥意思啊?
- important的反义词有哪些
- 转速与线速度什么关系?
- 淘宝客服的工作技巧是什么?基本技巧大全
- 异地怎么给家乡的父母亲送中秋月饼?
- 怎么过平安夜?平安夜要送什么礼物?
- 2021圣诞节创意礼物推荐
- 送喜欢的女生最好的圣诞节礼物是什么?
- 挪字组词,挪组词语,挪的组词