Excel情报局
职场联盟Excel
大家好,今天我们来讲讲关于VLOOKUP函数的一个实用奇招:VLOOKUP函数配合简单的INDIRECT函数实现多工作表汇总的效果。我们都知道VLOOKUP函数的用法多达几十个,掌握每一种用法的工作环境,对于我们解决职场中的实际问题会起到很大的帮助。
比如我们有4张分表,分别是“一季度”、“二季度”、“三季度”、“四季度”工作表。每张工作表都是“年份”、“季度”、“姓名”、“销量”数据,表格都为一维表格式。
工作表“一季度”:
工作表:“二季度”:
工作表:“三季度”:
工作表:“四季度”:
工作表:“合并表”:
我们最终想要将四个季度分表中每个人的销量数据匹配到总表中行标题与列标题对应的交叉位置,总表为二维表。
在常规的思路下,我们肯定是想到用查找类函数VLOOKUP函数进行分表到总表的数据匹配。下面我们来一步一步看,遇到问题后思考问题并解决问题。
首先我们在合并表B3单元格输入函数公式:
=VLOOKUP(A3,一季度!C:D,2,0)
我们先匹配第一个返回结果,即使用VLOOKUP函数,查找合并表B3单元格中的姓名“张三”,在一季度表“一季度!C:D”查询区域中,查找第二列对应的销量数据为“600”
但是B3单元格虽然可以使用该函数公式得到正确的匹配结果,但是要想批量的填充函数公式获取到B3:E6区域内的所有结果是不可能的。
那么我们是不是要每个单元格都要重新输入一次新的VLOOKUP函数呢?答案当然是不是的,下面我们继续来详细分析。
我们很容易分析出来,是VLOOKUP函数的第二参数“一季度!C:D”束缚了公式,它只能针对某一单元格的设置,而不能普遍覆盖所有的单元格。我们要让第二参数更加的智能且可以实现批量填充公式,可以这样做,一步一步来:
=VLOOKUP(A3,B2&"!C:D",2,0)
我们可以先将上一步中VLOOKUP的第二参数“一季度!C:D”中的“一季度”用列标题B2单元格替代,因为列表题正好与工作表标签名称一致。而上一步中VLOOKUP的第二参数“一季度!C:D”中的剩余“!C:D”部分,可以用连接符“&”与前面部分连接起来,注意“!C:D”部分需要加双引号引用。
这样做的目的是使第二参数的各部分套用了单元格引用,使其可以实现批量填充目的,但是直接这样输入的话,返回结果是一个错误值。
原因就是修改好后的VLOOKUP函数的第二参数“B2&"!C:D"”,它仅能代表具有引用样式的文本字符串,而不能实现真正的引用效果。
而INDIRECT函数可以将“具有引用样式的文本字符串,变成真正的引用”。
参数也非常简单:
INDIRECT(具有引用样式的字符串,[引用样式])
如果第二参数为TRUE或省略(包括参数值和逗号),会将第一参数中的字符串解释为A1样式的引用,如果第二参数为FALSE或是0,则将第一参数中的字符串解释为R1C1样式的引用。
所以可以这样修改公式:
=VLOOKUP(A3,INDIRECT(B2&"!C:D"),2,0)
将VLOOKUP函数的第二参数“B2&"!C:D"”直接用INDIRECT作为其参数,就可以实现“B2&"!C:D"”部分的真正引用效果了。
正是克服了这一难关。所以最终B3单元格返回了正确结果“600”。
为了使VLOOKUP函数可以正常填充:
=VLOOKUP($A3,INDIRECT(B$2&"!C:D"),2,0)
必须要对VLOOKUP函数的第一参数查找值A3添加“锁列不锁行”的绝对引用,变成$A3,因为公式向右填充时,A3单元格不能变化,公式向下填充的时候必须相对位移。INDIRECT函数的参数B2&"!C:D",必须使B2部分添加“锁列不锁行”的绝对引用,变成B$2,因为公式向右填充时,B2单元格必须相对位移,公式向下填充的时候不能变化。
为了使查找不到的结果不显示错误值,需要再嵌套个IFERROR函数:
=IFERROR(VLOOKUP($A3,INDIRECT(B$2&"!C:D"),2,0),"")
IFERROR函数第一参数,即VLOOKUP函数的返回结果如果出现错误值,则返回第二参数设置的空值。
其实重复学习Excel,刚开始是挺难的,但重复的次数多了总会成为习惯,先从坚持一星期开始,你会爱上那种脑子又累,又无限充实的感觉。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。
〖往期知识点精彩超链接点击阅读〗