【问题标题】:Arrayformula to return last non-empty cell in multiple rowsArrayformula 返回多行中的最后一个非空单元格
【发布时间】:2022-01-13 09:25:03
【问题描述】:

我需要帮助制定一个关于如何跨多行返回一行中最后一个非空单元格的数组公式。

公式将位于单元格 A2 的 A 列中,并且 A 列中的输出将如下所示:

我的公式仅适用于 1 行。我需要公式(只有 1 个公式)来返回 1000 多行的最后一个非空单元格。

这是我目前的公式,但它只适用于 1 行。每次添加新行时都需要将其向下拖动:

=LOOKUP(1, ARRAYFORMULA(1/(B2:Z2<>"")),B2:Z2)

是否有一个数组公式可以跨多行执行此操作而无需向下拖动公式?

任何帮助将不胜感激。非常感谢。

【问题讨论】:

    标签: google-sheets transpose trim substitution flatten


    【解决方案1】:

    尝试:

    =INDEX(REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
     SUBSTITUTE(B2:Z, " ", CHAR(13))),,9^9))), ".* ", ))
    

    【讨论】:

    • @itsover9000 答案已更新。立即尝试
    • 哇,它现在可以工作了。我可以知道公式是如何工作的吗?以及 13 和 9^9 在这一部分中的作用:CHAR(13))),,9^9))), ".* "
    • @itsover9000 确定。首先,我们用 CHAR(13) 替换所有空格,因为每个单元格有多个单词。 CHAR(13) 是一个看起来像空格的空符号(但不是)。接下来,我们转置整个范围并使用查询粉碎 - 每列的所有单元格都被压缩到一个单元格中,因此我们得到包含所有数据的单行。这个查询粉碎只有在我们使用大数字时才有可能 - 可以是您希望的任何数字 9454545、7876454、555555555,在这种情况下,我们使用 9^9。
    • @itsover9000 唯一的要求是这个大数字大于给定范围内所有行的总和。接下来,我们将我们的行展平为一列并修剪每个单元格,因为 QUERY 粉碎实际上所做的是将所有单元格(包括空单元格)压缩为单个单元格,并在每个单元格之间附加一个空格。接下来,我们使用 REGEXREPLACE 并删除直到最后一个空格的所有内容,以便获得所需的输出
    • @itsover9000 尝试:=INDEX(SUBSTITUTE(REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(SUBSTITUTE(B2:Z, " ", CHAR(13))),,9^9))), ".* ", ), CHAR(13), " "))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2011-06-19
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多