多语言展示
当前在线:1989今日阅读:86今日分享:14

excel中多文本列多表数据汇总实例

在多表汇总中有一种情况,当表并不是一维表或者二位表时,也就是需要汇总的各个表内有超过两个文本列,这种情况下不适合使用合并计算或者多重合并计算数据区域数据透视表来汇总,那么让各个需要汇总的工作表具有规范而有规律的名称,并在汇总表中让该名称作为一列,通过sumif嵌套indirect函数可以实现这种类型的多表汇总。
工具/原料
1

电脑

2

excel

方法/步骤
1

如下图所示是每个月的收入费用表,表的结构是相同的(具有相同的列标题),但是需要汇总的项目的单元格在每个表中的位置不唯一,位置也不对应,所以不能使用求和函数或者合并计算来进行汇总,另外由于每个表的最左边有两列文本,所以也不能使用多重合并计算数据区域数据透视表来进行汇总,多重合并计算数据区域数据透视表只允许左边有一列文本区列。

2

在全年汇总的b2单元格中插入sumif函数,然后选中1月表中b列作为函数的第一个参数,然后以全年汇总表中的b1单元格中的收入作为条件充当函数的第二个参数,以一月份的d列作为函数的第三个参数,也就是求和的区域,这里需要注意第一个和第三个参数的两列均使用绝对引用,而中间的条件参数需要使用混合引用(固定行不固定列)

3

点按确定完成函数的输入后,拖动单元格右下角的填充柄向右拖动,此时可以看到1月的收入和费用都通过函数计算出来了,但是当公式向下拖动时,函数并没有因为向下拖动而变化,因为sumif函数引用的区域始终都是1月表,并没有因为向下拖动而逐一变为2月表、3月表等等。

4

这时需要用到indirect函数来帮助我们完成任务,选中b2单元格,然后直接在编辑栏中的sumif函数第一个参数之前输入indirect(),括号将原来的第一个参数括起来,删除原来的'1月',用鼠标点击a2取而代之,然后输入一个连接符号&,然后将!$B:$B变为'!$B:$B',也就是用双引号括起来,然后将第一个参数复制到第三个参数的位置将$B:$B改变为$d:$d。

5

将完成的函数向左侧复制,然后再向下复制,但是得到的结果是#REF!,仔细观察,参数中的本来应该引用的a1单元格由于向右侧拖动变成了b1单元格,因此应该将最开始设置公式的单元格内的a1单元格的引用变为相对应用,也就是需要固定列,使用绝对引用,行相对引用,如下第二个截图箭头所指。

6

再次将b2中的函数向右复制,然后再向下复制到12月所在行,由于目前只有6个月的收入费用表,7月到12月的表还不存在,因此在全年汇总的7月到12月行的函数结果是错误值。

7

如果使用的excel是excel2007或者以上的版本可以在函数外面嵌套一个iferror函数,然后以刚才的函数作为第一个参数,第二个参数用双引号引用的空值代替,这样就可以屏蔽错误值了。

8

如果使用的是excel2003版本,则需要将函数改为=IF(ISERROR(SUMIF(INDIRECT($A3&'!$B:$B'),全年汇总!B$1,INDIRECT($A3&'!$d:$d'))),'',SUMIF(INDIRECT($A3&'!$B:$B'),全年汇总!B$1,INDIRECT($A3&'!$d:$d'))),然后将函数向右侧复制,然后再向下方复制,此时7月到12月的表中原来的错误值就被屏蔽了,这里使用的是if(iserror(),“”,())这种函数实现的错误值屏蔽,为了操作方便在改造函数时候可以先将原来的函数剪切一下,然后输入上面的函数骨架,然后再讲剪切的内容复制到内部的两个括号内,完成函数的输入。

9

在d2单元格中通过对应的收入减去费用算出净利润,然后将函数向下复制,此时函数在6月到12月的净利润对应单元格出现了#VALUE!的错误值,应用同样的方法将函数改造为=IF(ISERROR(B2-C2),'',B2-C2),这样所有的错误值都被屏蔽掉了。

10

这个实例中的重点是通过indirect函数实现了随着多个月表中的收入或者费用数据汇总到一起了,也就是在全年汇总的月分列中随着月份的变化,函数引用的月份表也相应的变化,这总汇总需要表的名称要规范并且有规律,然后再汇总表中左侧列是各个表的表名。

注意事项
1

单元格引用和字符串之间需要有连接符号&连接起来,字符串需要使用英文状态下的双引号括起来

2

可以直接通过iferror函数在excel2007中屏蔽错误值,在excel2003中屏蔽错误值需要用if函数嵌套iserror函数实现

推荐信息