indirect嵌套row对结构相同个数不定工作表汇总
1、如下图所示需要在汇总表中将全年各个月份的利润表中各项数据在汇总表内汇总,1月、2月到6月的工作表内存放的是每个月份利润表的数据。
2、各个月份中的利润表的结构是一样的,左侧列的各个项目的名称也是完全一致的,但是左侧列名称中由于利润表的固有格式使得单元格中的内容存在空格,所有在使用单元格中的项目作为条件时,必须要保证空格数是一致的才能使用sumif函数。
3、在汇总表中的一月主营业务收入对应单元格内输入一下内容=SUMIF(INDIRECT(B$1&"!$A:$A"),汇总表!$A2,INDIRECT(B$1&"!$B:$B")),然后将公式向右侧复制,再向下复制,这样就会在汇总表中各个月份的利润表对应项目内得到相应的数据。
4、但是在使用sumif函数的时候由于条件所在单元格内有空格,那么如果不小心将空格多打了一个或者少打了一个,就会造成sumif函数条件不匹配,而无法得到函数的结果,如下图所示,在汇总表的 减:主营业务成本前面之后一个空格,而在一月的 减:主营业务成本前面有两个空格,结果在汇总表的改行没有得到应有的计算结果。
5、另一种方法更适合这种汇总,以为每月的利润表中只有一列数值数据,可以直接使用indirect函数结合row函数进行引用,从而实现滚动汇总,在汇总表的b2单元格内输入函数=INDIRECT(B$1&"!b"&ROW()),这里indirect函数的作用是返回由文本字符串指定的引用。此函数立即对引用进行计算,并显示其内容。
6、如果在汇总表中只汇总一月列中的利润表对应项目,可以直接在b2单元格内输入='1月'!B2,或者点击一月工作表对应的单元格,从而得到公式='1月'!B2,那么将公式向下复制,完全可以得到一月对应的利润表项目数值,但是当向右侧复制时,我们需要引用其他月份利润表中的数据,这时候我们就需要表的名称发生变化,只有表的名称动起来,引用的数据才会逐月变动。
7、选中b2单元格然后点击编辑栏在原来公式的前面插入函数indirect,然后添加一对括号,将原来编辑栏内的内容括起来,然后吹涡皋陕用鼠标选中'1月',此时'1月'变成黑色底色,再用鼠标点击一下b1单元格或者直接输入b1,再公式向右复制,然后再向下复制的时候,只允许b1向右变化,不允许b1向下变化,因此需要选中b1单元格,然后点按键盘上的f4键,将b1变为B$1,这样就锁定了应用的行,而不会锁定引用的列。
8、然后通过用连接符号&将单元格地址和前面的内容连接起来,后面的单元格地址需要用双引号括起来,此时向下复制公式,发现公式并没有发生变化,因为每个单元格中的引用都是b2单元格的引用,因为b2已经被双引号括起来了,所以引用不会因为公式的向下复制而发生变化。
9、现在我们可以在b的后面添加一个双引号,然后再添加一个连接符号&,这样保持了b为字符串,不会因为公式的复制发生变化,而将在连接符号后面的2选中,将其替换为row(),这个函数的作用是返回引用的行号,此时函数再次向下复制的时候由于row函数的存在,函数引用的地址也是b列逐一向下引用的。
10、在输入完成这个函数之前还需要为其添加一个屏蔽错误值的函数嵌套,选中b2单元格中的I鲍伊酷雪NDIRECT(B$1&"!B"&ROW烫喇霰嘴()),然后点按键盘上的ctrl+x将行数剪切到剪切板上,然后再等号后面输入一个if函数,鼠标点击if函数后面的括号,当光标在括号内闪动的时候按键盘上的ctrl+a,此时if函数的参数名称已经出现在括号内部,并且被逗号间隔开了,将三个参数分别改变为iserror(),空值,和空白,然后将刚才剪切的内容粘贴在iserror后面的括号内以及第三个参数的空白位置,最终的到的函数是这样的=IF(ISERROR(INDIRECT(B$1&"!B"&ROW())),"",INDIRECT(B$1&"!B"&ROW())),将其向右侧复制,然后再向下复制。