使底行自动等于最近的行?

使底行自动等于最近的行?

我有一个 53 行 16 列的电子表格。一年中每过一周,就会有一行填满来自 16 个人的数据。

我希望底行始终代表一个人的当前分数(因为我们处于今年的第 9 周,单元格 A53 当前具有公式 =A9)。

但是,当第 10 周到来并且第十行已填满时,我必须将公式更改为 =A10。我想找到一种方法来自动选择底部已填满的行,而不必每周更改公式。

我已经看到了相关问题在 Excel 中自动选择一组中的最后一行但该解决方案对我来说不起作用。

答案1

假设数据是数字,尝试 LOOKUP,在 A53 中复制到:

=LOOKUP(9.9E+307,A1:A52)

答案2

您不需要安装任何额外的附加组件 - 只需输入以下内容A53

=INDIRECT("A"&COUNTA(A$1:A$52))

对于你的情况,它将返回范围内的最后一个非空值A1:A52。您可以根据需要更正范围,但请确保保留行引用绝对以避免公式向下移动时出现错误。但是,您可以自动填充到所有 16 个- 仅列会循环。

答案3

如果你安装了分析工具包,你可以访问WeekNum(序列,返回)功能。

如果程序总是在一年的第一周开始,您可以设置一个使用 WeekNum() 的 Indirect 语句来选择从哪里获取信息。例如:

=Indirect(连接("A", WeekNum(Today()))

在您想要最新数据的单元格中。如果程序在其他时间启动,您可以计算出它是在一年中的哪一周开始的,然后从公式的 WeekNum() 部分中减去这个数字。例如,如果您从第 10 周开始(因此第 11 周的结果在 A3 中,假设标题在第 1 行):

=Indirect(Concatenate("A", WeekNum(Today()-9))

注意:我现在没有在装有 Excel 的机器前,因此语法可能有点不对。您可能还需要检查有关标题行等的数学运算,但这应该很简单。

答案4

总结答案并添加我的2c:

您通常需要执行两个步骤:

  1. 找出您想要获取的行。以下选项

    • =COUNTA($A$1:$A$52)- 将计算所有元素 - 但忽略空白。因此,如果有人没有输入第 7 周,而是输入了第 8 周和第 9 周,这将返回 8
    • =WEEKNUM(TODAY())- 返回当前周数。它会在周一立即切换周数 - 即使尚未输入任何数据。
    • =MATCH("",$A$1:$A$52,0)- 这将返回第一行空白(因此请与一起使用-1
  2. 获得行号后(用于N步骤 1 的结果/公式),你需要告诉 Excel 返回第 N 个行。为此,您有多种选择:

    • =INDIRECT("A"&N)- 这将构造地址,比如A9然后返回该单元格中的值
    • =OFFSET($A$1,N-1)- 这将使用A1作为起始单元格,将其偏移N-1行并返回此结果
    • =INDEX($A$1:$A$52,N)- 这将返回范围 A1:A52 中的第 N 个元素。
       

    就你的情况而言,每个选项都同样适合,这取决于个人喜好。但是,如果你在复杂模型中使用了大量这些公式,则该INDEX公式优于OFFSET和,INDIRECT因为它非挥发性。这意味着 Excel 只计算一次 - 并且只有当其前任发生变化时才计算。INDIRECT另一方面OFFSET易挥发的,因此 Excel 会始终计算它们 - 即使其前任单元格均未发生任何变化 - 因此也会计算所有依赖单元格!这意味着每次重新计算将比使用INDEX

现在您只需将第一步和第二步合并为一个连接公式,例如,=INDEX($A1:$A$52,WEEKNUM(TODAY()))您就完成了。

Barry 的回答=LOOKUP(9.9E+307,A1:A52)是一个很好的技巧:它总是会返回最后一个非空白的值(从上到下)。

相关内容