前面一期我们学习了indirect函数的基本概念和基本用法,今天我们就来用indirect函数解决一个实际的问题--汇总全年的工资表。
上图所示的就是劳资人员常用工资表的样式,从图中我们可以看到,每个月的数据都是一个独立的工作表,然后又新建了一个单独的汇总表。现在,我们就来试试用indirect函数把这些独立的工作表的数据汇总到汇总表里面。
上图就是汇总表的样式,我们需要按部门汇总每个月的工资总额。
划重点:在设计汇总表的时候,行标题或者列标题中必须有一个与各个分表的标签名一致,以便利用标题指向被引用的工作表。
我们看到上面两个表,汇总表的列标题就正好对应了每个分表的表标签名,这样我们就可以根据列标题来引用分表的数据。
方法一:sumif直接引用我们先来看看,如果不使用indirect函数,我们要实现汇总是怎么做的,还是看图:
首先在图中的c3单元格输入公式:=sumif(1月!$b:$b,$b3,1月!$v:$v),然后把这个公式复制粘贴到d3单元格,再把公式中的“1月”改成“2月”,依次类推直到12月。有没有觉得这样很麻烦呢?不知道你们怎么想,反正我是觉得很麻烦的。
方法二:sumif嵌套indirect的间接引用我们再来看看用indirect函数值怎么做的,继续看图:
在上图中,我们在公式中引入indirect函数后的公式就变成了下面这样:=sumif(indirect(c$2&!$c:$c),$b3,indirect(c$2&!$v:$v))
公式解析:indirect(c$2&!$c:$c)--首先获取c$2的值“1月”,然后把它和字符串!$c:$c进行连接,得到一个新的字符串:1月!$c:$c。最后,indirect函数在将这个字符串转换成相应的单元格地址并返回该单元格的值。
第三个参数的运算过程跟第一个参数的运算过程是一样的。
我们在c3单元格完成了公式的输入后,就可以直接进行向右、向下的拖动完成公式的填充。这样是不是很方便呢。
indirect函数的引用过程,我们可以通过插入函数的对话看到:
在上面的indirect函数对话框中,我们可以清楚的看到indirect函数的的引用值。
总结:在这个实战的例子中,我们使用了sumif函数和indirect函数的嵌套使用,我们用inidrect函数的返回值替换了sumif函数中的第一参数和第三参数,从而实现了跨表格的单元格引用。
虽然用sumif直接引用也可以实现同样的功能,但是当数据量变大的时候,就体现出间接引用的优势了。
最后,欢迎留言交流,感谢顺手关注。。