与 30万 读者一起学Excel
某学员,老板给了她2份表格,要进行对账。
报账单,日期使用合并单元格,物品名称写得过于详细,如买1个苹果送李四。
明细表,输入非常标准。
卢子看完这2份表,直摇头,2个极端。1份是很不规范,1份是很标准,这样要对账,谈何容易!
本来是建议学员手工核对,买1个苹果送李四,内容这样输入,也是服了。
后来想想还是出手写个公式解决。
=IFERROR(LOOKUP(1,0/((LOOKUP(1,0/($A$2:A2<>""),$A$2:A2)=明细表!$A$2:$A$13)*FIND(明细表!$B$2:$B$13,B2)),明细表!$C$2:$C$13),0)
这条公式涉及到很多知识点:
01 填充合并单元格内容,查找到的数字,其实也是日期。
=LOOKUP(1,0/($A$2:A2<>""),$A$2:A2)
$A$2:A2在下拉公式的时候,区域就逐渐变大,依次变成$A$2:A3、$A$2:A4、$A$2:A5……
02以内容多的物品名称,查找内容少的物品名称。
=LOOKUP(1,0/FIND(明细表!$B$2:$B$13,B2),明细表!$C$2:$C$13)
FIND(内容少的区域,内容多的单元格),这里的用法很特殊,跟平常不一样。
03将2个公式合并,然后进行容错处理。
合并以后,有些内容找不到就会显示错误值。
=LOOKUP(1,0/((LOOKUP(1,0/($A$2:A2<>""),$A$2:A2)=明细表!$A$2:$A$13)*FIND(明细表!$B$2:$B$13,B2)),明细表!$C$2:$C$13)
嵌套IFERROR函数,让错误值返回0。
=IFERROR(LOOKUP(1,0/((LOOKUP(1,0/($A$2:A2<>""),$A$2:A2)=明细表!$A$2:$A$13)*FIND(明细表!$B$2:$B$13,B2)),明细表!$C$2:$C$13),0)
LOOKUP函数的经典模式很好用,可以实现单条件和多条件查找。条件中也可以再嵌套LOOKUP函数。
=LOOKUP(1,0/((查找值1=查找区域1)*(查找值2=查找区域2)*(查找值n=查找区域n)),返回区域)
当然,这个公式只能作为参考,并不能保证查找到的金额全部正确。因为报账单的物品名称写得很长,可能同时包含多个关键词,这样就会导致出错。
最后,为了你和同事不用加班,请规范输入内容!
源文件下载:
https://pan.baidu.com/s/1F1xwRLv7vwSGoQens6dHaQ
陪你学Excel,一生够不够?
一次报名成为VIP会员,所有课程永久免费学,仅需1400元,待你加入。
报名后加卢子微信chenxilu2019,发送报名截图邀请进群。
因为数据源不规范,你吃过什么苦头?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)
长按二维码,识别关注
请把「Excel不加班」推荐给你的朋友和同事