多表中同时对各分表分别求平均值,就用indirect!

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天来分享一个多表中跨表求平均值的案例。在之前的文章中,关于跨表汇总的案列我好像没怎么分享过。今天正好有位小伙伴提了这样一个问题,那就来分享下吧。
-01-

具体应用

如下动图所示,工作簿中共有7个工作表。现在的要求是对1-6这6个工作表的A列分别求平均值,并把结果放到平均值表的B3:G3中。

在平均值表的B3单元格输入公式=AVERAGE(INDIRECT(B2&"!a:a")),右拉完成。跨表引用都会用到indirect这个引用函数。

B2&"!a:a"返回的结果为"1!a:a",它是文本型的单元格引用,还不是真正的引用。在它的外面套个indirect函数,就会转为真正的单元格引用。

也就是说,INDIRECT(B2&"!a:a")返回的结果才是真正的单元格引用,代表1工作表的A列这个区域。然后在最外层套个average,就是对1工作表的A列求平均值。

这里要注意的一个问题是:工作表名和单元格区域的写法。工作表名最好用单引号包裹,后面连!,最后连单元格区域。最后的结构如下:INDIRECT("'工作表名'!单元格区域")

如果工作表名是变量的话,可以改为下面的写法:INDIRECT("'"&B2&"'!a:a")

上面还算是比较简单的,一次只引用一个工作表的A列,然后对其求平均值。其实我们还可以一次同时引用多个工作表的A列,然后分别对这些表的A列求平均值,最后一次性输出结果。这样的话就用到indirect的多维引用。

下图就是indirect跨表多维引用的用法,选中B3:G3,输入下面的公式=SUBTOTAL(1,INDIRECT(B2:G2&"!a:a")),按ctrl+shift+enter三键。

B2:G2&"!a:a"返回的结果为{"1!a:a","2!a:a","3!a:a","4!a:a","5!a:a","6!a:a"},是一个数组,里面有6个元素,分别是文本型的单元格引用。

INDIRECT(B2:G2&"!a:a")这部分是在上一步的外面套了个indirect函数,这样的话就返回真正的单元格引用。只不过现在不只返回一个区域,而是返回6个区域,分别是这6个表的A列,这就是多维引用。

然后用subtotal对多维引用进行降维计算,分别对这6个表的A列求平均值,返回的结果也是一个数组,同样包含6个值。如下动图所示。
如果想要在这6个平均值中,取出最大值的平均值。只需在subtotal外面套个max函数。

今天的分享就到这里,希望对你有所帮助。不要忘记一键三连哦。

链接:

https://pan.baidu.com/s/1DmGju2dTpDa-16HC6FUscQ

提取码:o6f4
(0)

相关推荐