Excel表格用Vlookup、Indirect、Match函数汇总多个工作表的数据


数据的汇总是我们日常工作中经常会遇到的问题。如果工作表的数量较少可以通过复制粘贴汇总,但是工作表很多时在用复制粘贴效率就非常低。今天就为朋友们分享一种单纯使用函数、不包含任何VBA代码快速汇总多个工作表数据的方法。

一.实例要求及动态演示:

1.在这个实例中需要把12个月份的工资表汇总到一张工作表里。


2.动态演示:


二.主要相关函数介绍

汇总多个工作表的数据有Vlookup函数、Match函数和Indirect函数。前两个都比较常用,在这里主要介绍一下Indirect函数。

1.函数:Indirect(英文意思:间接的)

2.功能:此函数立即对引用进行计算,并显示其内容。当需要更改公式中单元格的引用,而不更改公式本身,请使用此函数,INDIRECT为间接引用。

3.语法:INDIRECT(ref_text,[a1])

Ref_text 为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值#REF!或#NAME?。

如果 ref_text 是对另一个工作簿的引用(外部引用),则工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值#REF!。

a1 为一逻辑值,指明包含在单元格ref_text 中的引用的类型。

如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。

如果 a1 为 FALSE,ref_text 被解释为 R1C1-样式的引用。

4.应用举例


5.总结

(1)如果使用Indirect函数直接引用ref_text单元格内容,需要加双引号。

(2)使用Indirect函数通常返回的是一个间接的单元格区域的引用。

三.公式进化过程

1.手动汇总第一个表格的数据,通过鼠标选择表格得到的公式为=VLOOKUP(A3,'1月'!A:D,4,0)。


2.我们需要将第二个参数优化,让其根据月份名称自动更新对应工作表的区域。最后,想到用INDIRECT(B$2 &"!A:D")作为Vlookup函数的第二个参数。

3.Vlookup函数的第三个参数为4,这里能能汇总合计工资。通过用MATCH($B$1,INDIRECT(B$2 & "!A1:D1"),0)代替可以汇总B1单元格内容对应数据。

四.制作步骤

1.在汇总表B3单元格输入公式:

=VLOOKUP($A3,INDIRECT(B$2 &"!A:D"),MATCH($B$1,INDIRECT(B$2 & "!A1:D1"),0),0)

2.公式解析:


(1)INDIRECT(B$2 &"!A:D"),B2单元格内容为要汇总的工作表的名称(注意要绝对引用行)。这部分公式返回的单元格区域是对应工作名称的A:D列单元格区域。(这部分作为Vlookup函数的第二参数)

(2)MATCH($B$1,INDIRECT(B$2 & "!A1:D1"),0),同理INDIRECT(B$2 & "!A1:D1")返回的时对应工作表的A1:D1单元格区域(在这里返回的是{"姓名","基本工资","奖金","合计工资"}构成的数组)。最后利用Match函数精确查找要汇总项在表头的列数位置作为Vlookup函数的第三参数。


(3)最终利用Vlookup查找不同人不同月份的工资。