在Excel中跨多个工作表返回数据

在Excel中跨多个工作表返回数据,excel,excel-formula,excel-2000,Excel,Excel Formula,Excel 2000,如何创建从不同工作表返回总计、平均值、计数、最小值、最大值等的公式?列(存在的列)的标题信息是一致的,但从一张图纸到下一张图纸,列编号可能不同,也可能不同。假设我有7个数据选项卡,例如,它们中的一些或全部可能包含bean的列标题,但是列编号可能在所有选项卡中都是一致的,也可能不一致。它们在工作表中的实际位置是完全动态的 我的电子表格有几个原始数据选项卡,我想在摘要/报告表中与之进行比较。我相信这是可以做到的,但我担心这已经超出了这个老大脑的能力 我曾经考虑过并玩弄过一系列使用间接法、索引法、匹配

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

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


我曾经考虑过并玩弄过一系列使用间接法、索引法、匹配法的公式,但就是想不出来。非常感谢你的帮助。谢谢

这里有一个可能的纯函数解决方案。最终结果如下所示:

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

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

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

  • 找到位置后,我们需要获得整个列地址,以便应用计数和求和函数(例如,
    SUM、COUNT、AVERAGE
    等)。为此,我们使用
    ADDRESS
    函数与
    LEFT
    组合来获取列字母

    LEFT(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1) <~~ returns H
    

    左侧(地址(1,匹配($E$2,间接(““&C$3&”!1:1”),0),4,1),1)如果每个工作表数据位于
    表中,这将很容易。如果没有,可以通过索引+匹配组合来完成。或者您需要通过
    VBA
    实现自动化。如果不了解您当前的位置,就很难真正帮助您获得所需。不熟悉Excel中的表格。我可能应该指出,仍然在使用Excel2000。在VB中实现自动化似乎需要做更多的工作,所以我想用函数来解决这个问题。谢谢你的意见。无论如何,对我来说,函数的一个问题部分是所需的串联,以及必须嵌套这么多函数的复杂性。我的旧大脑再也不能很好地处理那种事情了。变老真糟糕!LOL为什么不直接粘贴一个链接到你需要的信息,然后把它放到当前的工作簿中去处理呢?好的,它可能不是最短/最甜/最优雅的解决方案,但它可能是一个更清晰的解决方案。如果有效的话。。。我们中的一些人(我…)不是程序员,只是需要一个解决方案。好吧,我们的目标是要有一个汇总表,对每个表进行比较,以便在其他事情中发现趋势。我认为最好将数据与报告分开,以便于维护。一旦算出公式,一切都应该是小菜一碟。事实上,对于一个excel高手来说,这应该是小菜一碟,这就是我来这里的原因。哈哈。
    变老真糟糕
    有那么糟糕吗?我现在有点担心,因为我们都要去那里,哈哈。无论如何,我发布了一个可能的解决方案,但我在Excel 2013中做到了这一点。如果使用的函数在2000年存在,那么我们都是好的(我没有时间研究2000年可用的函数,我的坏)。但我希望它能让你走。先生,你是一颗宝石。人类的真正荣誉!非常感谢你的努力。它工作得很好。我也很感激你把一切都分解了。我以后肯定会提到这一点。再次感谢,保重@用户3752758很高兴它为您工作。顺便说一句,由于某种原因,它不会让我对你的答案投赞成票,尽管我能够将它标记为答案。我把自己的帖子投错了(又是年龄问题了!!)。但我不确定这是否与此有关。有什么想法吗?一切都好了。不过,我不得不对公式进行调整。任何时候当列>Z时,它都会返回无效且不可预测的结果。我预先准备了一个if测试来检查列是否大于26,然后插入每个列的公式。除此之外,答案是完美的,通过这次练习,我对使用配方奶粉的成分感到更加舒适。这是一次非常省时的学习经历。我真是太感谢你了@user3752758干得好,如果你有可用的
    替换
    函数思想,你可以用它代替
    。请参阅我的编辑。我的缺点是没有预料到行数据将超过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($E$2,INDIRECT("'"&C$3&"'!1:1"),0) <~~ returns 8
    
    LEFT(ADDRESS(1,MATCH($E$2,INDIRECT("'"&C$3&"'!1:1"),0),4,1),1) <~~ returns H