当使用 INDIRECT 插入范围时,无论注入多少行或几行,是否有可能在其末尾产生“动态”总和?

当使用 INDIRECT 插入范围时,无论注入多少行或几行,是否有可能在其末尾产生“动态”总和?

在 Excel 中我有一个公式,

=INDIRECT("'MyOtherSheet'!F2:F32")

其中 F32 实际上是指一个计数器,用于计算另一张表中的行数,并将数字插入其中。这意味着可以插入可变数量的行。例如 F2:F39 或 F2:F45

在注入的行底部,我想将所有数字相加并显示一条顶部水平线。有没有办法自动添加这个总数?例如,它注入到 A1:15,那么总数应该在 A16 中,但如果是 A1:20,那么总数应该显示在 A21 中。

答案1

为了使问题得到正确的回答,您可以使用以下内容:

=INDIRECT(  "'MyOtherSheet'!F2:F"  &  'MyOtherSheet'F32  )

请注意,对 F32 的引用不是按照您的方式在字符串中输入的,而是字符串以仍然需要的行号结尾,然后您将&F32 中的值连接(如果您喜欢这个词,可以称之为“连接”,但连接两个文本片段的正确做法是称为“联合”或片段的连接)到字符串的末尾。

要做到这一点,“F32”必须是实际的单元格引用,以便 Excel 读取单元格中的值并附加该值。正如您所看到的,文字“F32”是提供给INDIRECTExcel 的字符串的一部分,它获取字母并尝试对所呈现的字符串采取行动。它永远不会意识到您实际上是想读取单元格并从那里获取值。

我上面说“像下面这样”是因为这种情况有多种出现方式,因此可以说有多种方法可以让你走出森林。例如,你可能有一个单元格引用,而不仅仅是一个表示行数或向下移动多少的数字。然后它会读取它,然后转到该单元格查找值。在你的公式中,它被告知要转到从 F2 到 F32 的所有单元格并根据在其中找到的内容采取行动……如果它遵循命令,就会出现问题……但INDIRECT只会对这样的字符串中的第一个单元格执行此操作,因此它只提供 F2 所具有的内容。

但是,另一种情况是,您想要上述情况之一:您想要在 F32 中放置一个实际的单元格引用,而不是行数或结束行。因此,您不是在 F32 中输入“43”来将 F44 作为范围的结尾 (F2:F44),而是想要在 F32 中输入“F44”,这样您就可以直接告诉它结束在哪个单元格上。在这种情况下,我给出的公式会略有不同:

=INDIRECT(  "'MyOtherSheet'!F2:"  &  'MyOtherSheet'F32  )

您发现差异了吗?是的,差别非常小:字符串不再以“!F2:F”结尾,F32 单元格不再以数字作为行号,而是删除最后一个“F”,以“!F:”结尾,这样无论使用什么完整的单元格引用(字母和数字,而不仅仅是像以前那样使用数字)都将连接到字符串的末尾,并且范围将正确指定。

这是一种细节决定成败的事情,在仔细考虑需要做什么之后,必须做到精确。更有趣的是,当您希望指定要读取的命名范围以INDIRECT获取要使用的值时,或者当您希望它找到命名范围的名称并返回实际的命名范围本身时,INDIRECT使用起来可能非常棘手。

使用起来很棘手是避免使用它的一个重要原因,而且比对公式不稳定的任何担忧都重要得多。INDEX尽可能使用时Darren Bartrup-Cook通常是可行的,而且在让 Excel 计算要使用的值时通常更容易做到。(因此,不是当您想要在单元格 F32 中直接输入“F44”时,而是当单元格 F32 有一个公式来计算您希望单元格 F44 成为范围的末尾时。)

答案2

如果你的 Excel 版本支持 VSTACK(),你可以这样做

=VSTACK(INDIRECT("'MyOtherSheet'!F2:F32"),SUM(INDIRECT("'MyOtherSheet'!F2:F32")))

编辑:我看到@Darren Bartrup-Cook 已经在评论中给出了这个答案。抱歉

相关内容