1

您如何创建从不同工作表返回总计、平均值、计数、最小值、最大值等的公式?列(存在)在其标题信息中是一致的,但可能会或可能不会从一张纸到下一张,列数明智。假设我有 7 个数据选项卡,例如,其中一些或全部可能包含 bean 的列标题,但列号在所有选项卡中可能一致,也可能不一致。它们在工作表中的实际位置是完全动态的。

我的电子表格有几个原始数据选项卡,我想在摘要/报告表中进行比较。我确信这是可以做到的,但恐怕这有点超出了这个老大脑的能力。

我已经考虑并玩弄了一堆使用间接,索引,匹配的公式,但无法弄清楚。您的帮助将不胜感激。谢谢

4

1 回答 1

2

这是一个可能的仅功能解决方案。最终结果将如下所示:

在此处输入图像描述

我们将使用四 (4) 个主要功能:

  1. 地址
  2. 间接
  3. 匹配
  4. 剩下

注意:如果您对如何使用这些功能有疑问,请点击链接

公式: 这是在上面的单元格 C4 中

=平均(
         间接(
                  "'"& 3 加元 & "'!" &                                          
                  LEFT(地址(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1)
                  & ":" &
                  LEFT(地址(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1)
                  )
        )

Edit1:要处理下面对超过 26 个标题的评论,请更改此

LEFT(地址(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1)

对此:

SUBSTITUTE(地址(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),"1","")

基本上做的是:

  • Bean使用MATCH函数查找标题所在的位置。为此,您必须合并使用,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函数以及您选择的计数和/或求和函数。

Total in的示例公式C5

在此处输入图像描述

Max in的示例公式C6

在此处输入图像描述

最后,您所要做的就是将公式复制到具有工作表名称的所有列中。
只需在最后一个旁边添加工作表名称并复制公式即可。就是这样。我希望这接近你想要的,我希望我使用的所有功能都可以在 Excel 2000 中使用。

于 2017-07-12T06:34:40.050 回答