VLOOKUP函数多表查找的通用套路

2019-05-11 11:41:18 0 2

现在有免费的精英会计交流群,每天前150名进群免费,与众多优秀财务人一起讨论业务、交朋友!进群加微信号kjsc022

汇总表根据每月的数据,查找姓名对应的实发提成。每个月份的表格格式都一样,姓名在A列,实发提成在L列。


每月数据


汇总表


对于这种问题,难点在于如何使公式向右拖动的时候,引用的表格能够变动。从2018年6月变成2018年7月,直到2018年12月。


普通的查找公式,在右拉公式的时候,工作表名称是不会变动的。

=VLOOKUP($A2,'2018年6月'!A:L,12,0)


而汇总表刚好列出了每个工作表名称,因此可以间接引用这些名称。输入公式后,得到的结果跟预期不同,并不是年月的形式,而是数字。

=B1&"!A:L"


虽然单元格显示的是年月形式,实质上并不是,针对这种,可以用TEXT函数转换。

=TEXT(B1,"e年m月")&"!A:L"


不过这个并不是真正的区域,还需要嵌套INDIRECT函数,才能间接转换成区域。

=INDIRECT(TEXT(B$1,"e年m月")&"!A:L")


将区域嵌套在原来的VLOOKUP函数里面,即可查找到相应的对应值。在查找过程中如果没有对应值会显示错误值,这时再嵌套一个IFERROR函数,让错误值显示0。

=IFERROR(VLOOKUP($A2,INDIRECT(TEXT(B$1,"e年m月")&"!A:L"),12,0),0)


多表查找基本上都是这个套路,理解了这个公式,其他自然就懂了。


这里再教你一个小技巧,当区域有很多列的时候,在数有多少列的时候可能会数错。而借助COLUMNS函数,就能轻易解决这个问题。


比如现在想知道C:S总共有多少列。

=COLUMNS(C:S)


这个技巧卢子经常用,很好用。这样,再也不用担心VLOOKUP函数第三参数数错的问题了。


现在有免费的精英会计交流群,每天前150名进群免费,与众多优秀财务人一起讨论业务、交朋友!进群加微信号kjsc022  

来源:Excel不加班,作者:卢子