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

时间:2017-07-12 03:02:26

标签: excel excel-formula excel-2000

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

我的电子表格包含几个原始数据标签,我想在摘要/报告表中对其进行比较。我确信这可以做到,但我担心它远远超出了这个老大脑的能力。

我已经考虑并使用间接,索引,匹配玩弄了一堆公式而且无法理解。非常感谢您的帮助。感谢

1 个答案:

答案 0 :(得分:2)

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

enter image description here

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

  1. ADDRESS
  2. INDIRECT
  3. MATCH
  4. LEFT
  5. 注意:如果您对如何使用这些功能有疑问,请点击链接

    公式: 这是在单元格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)
                      )
            )
    

    编辑1:要处理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","")
    

    基本上做的是:

    • 使用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函数以及您选择的计数和/或求和函数。

      < / LI>

    C5 总计的示例公式:

    enter image description here

    C6 最大的示例公式:

    enter image description here

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