Excel中的跨表查询,多表汇总,对于一些人来说,这是一项必学的技能。
下图中有13张工作表,分别是一月到十二月每个月的销售表以及一张汇总表。
![0c5ba96adeb92383dd5f13b5e9cd233e.gif](https://i-blog.csdnimg.cn/blog_migrate/cf8d78911cbb0e49a894725a986aa201.gif)
需求:把一月到十二月份的表数据合并到汇总表中。最后的结果如下图所示。
![0c336037d431a7a32789760e2f11085f.png](https://i-blog.csdnimg.cn/blog_migrate/65ef042867aae2ff8f016b71193a4bd0.jpeg)
“查询”数据,大家都想到可以用VLOOKUP函数来实现,但这个问题中,我们只使用一个VLOOKUP函数是不能解决的,我们必须嵌套一个引用函数INDIRECT来实现跨工作表数据的汇总。
上一篇文章我们很详细地讲了VLOOKUP函数的使用方法,对这个函数不熟悉的可以看看我上篇文章。现在跟大家先讲讲INDIRECT函数的基础用法。
一、INDIRECT函数的使用。
INDIRECT函数主要是返回文本字符串所指定的引用。
语法:INDIRECT(ref_text, [a1])。
![365666a7c95253e64e4106df1d766cad.png](https://i-blog.csdnimg.cn/blog_migrate/5c91478e40c190358499b4e8936e196f.jpeg)
参数说明:
ref_text:必需。 对包含A1样式的引用、R1C1样式的引用、定义为引用的名称或对单元格的引用作为文本字符串的单元格的引用。 如果ref_text不是有效的单元格引用, 则返回#REF! 。
如果ref_text引用另一个工作簿 (外部引用), 则必须打开另一个工作簿。 如果原工作簿未打开, 则返回#REF! 。
如果ref_text引用的单元格区域超出1048576的行限制或列限制16384,则返回#REF!错误。
![b166c04a28a017b19c82d462509f7ffb.png](https://i-blog.csdnimg.cn/blog_migrate/d4cef646a611207a53572f1015a19d4b.jpeg)
a1:可选。一个逻辑值,用于指定包含在单元格ref_text中的引用的类型。如果a1为TRUE或省略,ref_text被解释为A1样式的引用。如果a1为FALSE,则将ref_text解释为R1C1样式的引用。
![7d1dccee3ccd61175c2e8688d735c0fe.png](https://i-blog.csdnimg.cn/blog_migrate/fa8d49ecc4ffbeaabbc6ca09ca5c01f8.jpeg)
有了对INDIRECT函数的基本了解,下面我们做这道题就很简单了。
具体操作步骤如下:
1、打开汇总表 -- 选中B2单元格 -- 在编辑栏中输入公式“=VLOOKUP(B$1,INDIRECT($A2&"!A:B"),2,0)”-- 按Enter键回车。
![7e9fa213be4c94a1aad212d842c3c8db.png](https://i-blog.csdnimg.cn/blog_migrate/6fab1fbdba01111f28286b30d65019c8.jpeg)
2、将鼠标光标移到B2单元格右下角出现“十”字符号时往右填充公式至G2单元格,往下填充公式至G13单元格。
![31c801ca4946e2da7468126b4e3d6f6f.gif](https://i-blog.csdnimg.cn/blog_migrate/bdc26836f6c99fe9e8520b203abf716d.gif)
3、完整的动图演示如下。
![667366767fe07969d32f642c9f5d8ad6.gif](https://i-blog.csdnimg.cn/blog_migrate/1e14f5c8a61b0c4fb3bad15d0c3a1499.gif)
【公式解析】=VLOOKUP(B$1,INDIRECT($A2&"!A:B"),2,0)
第一个参数(B$1):要查找的值。我们这里要查找的是“姓名”对应的每一个月的销售提成,所以查找值为“姓名”。
第二个参数(INDIRECT($A2&"!A:B")):要查找的区域。以A2单元格为工作表的名称,引用工作表中的A列和B列单元格区域。A列是姓名,B列是销售提成。$A2&"!A:B"是一个文本函数。表示将A2单元格和 "!A:B" 这个字符串联合起来,组成一个新字符串。A2单元格中的内容为“1月”,和 "!A:B" 这个字符串组合后就变成 "1月!A:B" 。所以INDIRECT($A2&"!A:B")这个公式就相当于:=INDIRECT("1月!A:B")
第三个参数(2):返回数据在查找区域的第几列数。这里我们要返回的数据是“销售提成”,销售提成在查找区域中是B列,B列是第2列,所以是 2。
第四个参数(0):0表示精确查找,如果省略这个参数的话,默认是模糊查找。精确查找也可以写成FALSE。
![7ddc15cbca9d3341b0325883f6a881e5.png](https://i-blog.csdnimg.cn/blog_migrate/7a57c34c420772d4010470e5d08c85d8.jpeg)
上述公式简单地理解就是:以A2单元格的名称为工作表的名称,在这张表的A:B区域中精确查找B1的值,并返回B列的结果。
学会了两个函数的组合,工作中真的减少了我很多时间,以前用半个钟才可以完成的工作,现在几分钟就搞定了,多学几个小技巧确实有用。帮忙点个赞转发一下呗~
![1f12721fc3b8c59ad5775d2f38295705.png](https://i-blog.csdnimg.cn/blog_migrate/e70119ba8753c2cfaf353dfe985899eb.jpeg)
想学更多的Word、Excel等办公技巧吗?欢迎关注小编哦,定期更新实用技巧供大家学习。
您的赞赏、关注、转发、评论、点赞和收藏都是对小编的鼓励和支持,谢谢您!