厉害了,lookup还能这样玩

学员群聊天的话,作为今天的标题。

关于LOOKUP函数,有不少人还是停留在死记公式的状态,其实,只要稍微变动一下就可以完成非常多的效果。
1.获取最大值对应的城市

最大值用MAX函数,将这个作为查找值就可以。
=LOOKUP(1,0/(MAX(B2:E2)=B2:E2),$B$1:$E$1)

如果是最小就用MIN函数,还有第N大的用LARGE函数,第N小的用SMALL函数,都是可以直接嵌套进去。
比如现在获取第2大的城市。
=LOOKUP(1,0/(LARGE(B2:E2,2)=B2:E2),$B$1:$E$1)

2.获取每个城市最后一次的日期、倒数第二次的日期

这个当然可以直接用案例1的MAX、LARGE跟LOOKUP函数的组合。不过,LOOKUP函数实在太灵活了,不借助其他函数也可以单独解决。
当日期升序排序,直接查找就是最后一次的日期。如果你查找后,得到的是数字,记得将单元格设置为日期格式。
=LOOKUP(1,0/(E2=$B$2:$B$19),$A$2:$A$19)

倒数第二次的日期,也就是满足城市和比最后一次的日期还小2个条件。
=LOOKUP(1,0/((E2=$B$2:$B$19)*(F2>$A$2:$A$19)),$A$2:$A$19)

3.混合格式查找订单号

左边的订单号一部分是用RIGHT函数提取出来的文本格式,一部分是手工写的数值格式。现在要根据单据编号查找对应的订单号。
我们都知道,查找对应值必须格式一致,否则查找结果会出错。转换格式最简单的方法是辅助列,文本转数值是前面加--,数值转文本是后面&""。

订单号:
=IFERROR(LOOKUP(1,0/(RIGHT(D2,6)=$C$2:$C$9),$C$2:$C$9),"")

当然,不用辅助列也行。
=IFERROR(LOOKUP(1,0/(RIGHT(D2,6)=$B$2:$B$9&""),$B$2:$B$9&""),"")

最后再总结一下LOOKUP函数的语法,可以单条件也可以多条件,每个参数都允许嵌套其他函数。
=LOOKUP(1,0/((查找值1=查找区域1)*(查找值2=查找区域2)),返回区域)
上篇:2道Excel面试题,竟然告诉我们写公式不是越优秀越好!
你还知道LOOKUP可以用在哪里?

作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)
赞 (0)