【问题标题】:Returning data from across multiple worksheets in Excel从 Excel 中的多个工作表返回数据
【发布时间】:2017-07-12 03:02:26
【问题描述】:

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

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

我曾想过并玩弄了一堆使用间接、索引、匹配的公式,但就是想不通。您的帮助将不胜感激。谢谢

【问题讨论】:

  • 如果每个工作表数据都驻留在table 中,那将很容易。如果没有,可以通过 Index + Match 组合来完成。或者您需要通过VBA 实现自动化。如果不了解您当前的位置,就很难真正帮助您获得想要的东西。
  • 不熟悉 Excel 中的表格。仍然使用我可能应该指出的 Excel 2000。在 VB 中自动化似乎需要做更多的工作,所以我想坚持使用函数来解决这个问题。感谢您的输入。无论如何,对我来说,函数的问题之一是需要的串联,以及必须嵌套这么多的复杂性。我的旧大脑已经不能很好地处理这种事情了。变老了真恶心!大声笑
  • 为什么不直接将链接粘贴到您需要将其带入当前工作簿的信息中,然后在那里处理呢?好的,它可能不是最短/最甜蜜最优雅的解决方案,但它可能是一个更清晰的解决方案。如果可行的话……我们中的一些人(我……)不是程序员,只需要一个解决方案。
  • 好吧,我们的目标是有一个汇总表,它对每个表进行比较,以便在其他事情中发现趋势。我认为最好将数据与报告分开,以便于维护。一旦计算出公式,它应该是小菜一碟。实际上,对于一个excel wiz来说,无论如何这应该是小菜一碟,这就是我在这里的原因。大声笑。
  • Sucks getting old 有那么糟糕吗?我现在有点担心,因为我们都去那里哈哈。无论如何,发布了一个可能的解决方案,但我在 Excel 2013 中这样做了。如果使用的函数存在于 2000 年,那么我们都很好(我没有时间研究 2000 年有哪些函数可用,我的错)。但我希望它能让你继续前进。

标签: excel excel-formula excel-2000


【解决方案1】:

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

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

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

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

公式: 这是在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","")

基本上是:

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

C5Total的示例公式:

C6Max的示例公式:

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

【讨论】:

  • 你先生是一颗宝石。对人类的真正功劳!非常感谢您的所有努力。它完美地工作。我也很欣赏你把一切都分解的想法。我以后肯定会提到这个。再次感谢,保重!
  • @user3752758 很高兴它对你有用。顺便说一句,this is how we say thanks in Stackoverflow :)
  • 出于某种原因,它不会让我投票赞成您的答案,尽管我能够将其标记为答案。我错误地对自己的帖子投了赞成票(又是年龄问题!!)。不确定它是否与它有关。有什么想法吗?
  • 现在一切正常。不过,我不得不对公式进行调整。每当一列 >Z 时,它都会返回无效和不可预测的结果。我预先进行了一个 if 测试以检查该列是否 > 26,然后为每个插入公式。除此之外,答案是完美的,通过这个练习,我越来越习惯于使用公式的组件。这是一个很好的节省时间和学习经验。真是太感谢你了!
  • @user3752758 干得好,如果你有SUBSTITUTE 功能可用的想法,你可以使用它来代替LEFT。请参阅我的编辑。我没有预料到您的行数据会超出 26 个单字母列标记:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 2011-10-12
  • 2017-11-27
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
相关资源
最近更新 更多