从 Excel 中的多个工作表返回数据

Returning data from across multiple worksheets in Excel

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

我的传播sheet 有几个原始数据选项卡,我想在 summary/report sheet 中与它们进行比较。我相信这是可以做到的,但恐怕这超出了这个老脑子的能力范围。

我已经考虑并尝试了一堆使用间接、索引、匹配的公式,但就是想不出来。非常感谢您的帮助。谢谢

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

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

  1. ADDRESS
  2. INDIRECT
  3. MATCH
  4. LEFT

注意:如果您对如何使用这些功能有疑问,请按照link

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

=AVERAGE(
         INDIRECT(
                  "'"& C & "'!" &                                          
                  LEFT(ADDRESS(1,MATCH($E,INDIRECT("'"&C&"'!1:1"),0),4,1),1)
                  & ":" &
                  LEFT(ADDRESS(1,MATCH($E,INDIRECT("'"&C&"'!1:1"),0),4,1),1)
                  )
        )

Edit1: 要处理下面 headers 超过 26 的评论,请更改此

LEFT(ADDRESS(1,MATCH($E,INDIRECT("'"&C&"'!1:1"),0),4,1),1)

对此:

SUBSTITUTE(ADDRESS(1,MATCH($E,INDIRECT("'"&C&"'!1:1"),0),4,1),"1","")

基本上是做什么的:

  • 使用 MATCH 函数查找 header Bean 所在的位置。为此,您必须合并 INDIRECT 的使用,因为您的 sheet 名称是动态的(在此示例中,您的 sheet 名称在 C3 - Data1 中)。 (我假设你所有的 header 都在第一行,我在那里使用 1:1注:本例中,Bean在Data1的H列sheet

    MATCH($E,INDIRECT("'"&C&"'!1:1"),0) <~~ returns 8
    
  • 找到它的位置后,我们需要获取整列地址,以便我们可以应用计数和求和函数(例如SUM,COUNT,AVERAGE等...)。为此,我们使用 ADDRESS 函数结合 LEFT 来获取列字母。

    LEFT(ADDRESS(1,MATCH($E,INDIRECT("'"&C&"'!1:1"),0),4,1),1) <~~ returns H
    
  • 然后我们只需重复该公式并将其与:连接即可得到H:H

  • 现在我们有了列地址,我们只需再次将它与 sheet 名称连接起来,然后应用最终的 INDIRECT 函数加上计数 and/or 求和您选择的功能。

总计的示例公式 C5:

Max的示例公式C6:

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