[英]Returning data from across multiple worksheets in Excel
如何创建公式,以从不同的工作表中返回总数,平均值,计数,最小值,最大值等? (存在的)列的标题信息是一致的,但是从一张纸到下一张纸可能会相同,也可能不会不同。 假设我有7个数据标签,例如,其中的某些或全部可能包含bean的列标题,但是所有标签之间的列号可能一致,也可能不一致。 它们在工作表中的实际位置是完全动态的。
我的电子表格具有几个要在摘要/报告表中与之进行比较的原始数据选项卡。 我敢肯定这是可以做到的,但恐怕这超出了这个老脑子的能力。
我已经考虑过,并且使用了一系列使用间接,索引,匹配的公式,但无法弄清楚。 您的帮助将不胜感激。 谢谢
这是一个仅适用于功能的解决方案。 最终结果将如下所示:
我们将使用四(4)个主要功能:
注意:如果您对如何使用这些功能有疑问, 请点击链接
公式: 在上面的单元格C4中
=AVERAGE( INDIRECT( "'"& C$3 & "'!" & LEFT(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1) & ":" & LEFT(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1) ) )
Edit1:要处理以下针对超过26的标题的评论,请更改此
LEFT(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1)
对此:
SUBSTITUTE(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),"1","")
基本上做什么是:
使用MATCH
函数查找标头Bean
所在的位置。 为此,由于工作表名称是动态的,因此必须合并使用INDIRECT
(在此示例中,工作表名称在C3- Data1
)。 (我假设您的所有标头都在第一行,我在其中使用1:1
) 。 注意:在此示例中, Bean
位于Data1表的H列中
MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0) <~~ returns 8
找到它的位置后,我们需要获取整个列地址,以便我们可以应用计数和求和功能(例如SUM,COUNT,AVERAGE
等)。 为此,我们将ADDRESS
函数与LEFT
结合使用以获得列字母。
LEFT(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1) <~~ returns H
然后,我们只需重复该公式并将其与:
连接即可得到H:H
现在我们有了列地址,我们只需再次将其与工作表名称连接起来,然后应用最终的INDIRECT
函数以及您选择的计数和/或求和函数。
C5
的总计示例公式:
C6
中Max的示例公式:
最后,您所要做的就是在带有工作表名称的所有列中复制公式。
只需在最后一个名称旁边添加工作表名称并复制公式即可。 而已。 我希望这接近您想要的,并且希望我使用的所有功能在Excel 2000中都可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.