【问题标题】:I am looking for a method with Arrayformula and vlookup to find the first non empty cell from the bottom up我正在寻找一种使用 Arrayformula 和 vlookup 的方法来从下往上查找第一个非空单元格
【发布时间】:2020-10-22 13:33:55
【问题描述】:

我发现here 使用 arrayformula 和 vlookup 查找列中第一个非空单元格的精彩公式。

=ArrayFormula(vlookup(ROW(1:10),{IF(LEN(A1:A10)>0,ROW(1:10),""),A1:A10},2))

我的问题是是否有可能实现相同但自下而上。

我创建了this 电子表格,其中第二个选项卡中的红色值是使用公式获得的预期结果。

这个公式的结果是

aa
 a
vv
 v
 v
cc
 c

而我正在寻找的是:

vv
 c
 c
 c
cc
 b
 b
bb
 a
aa

【问题讨论】:

  • 您能否提出您的问题,该公式用于获得您显示的结果的值是什么?

标签: google-sheets


【解决方案1】:

答案:

您可以使用类似于您已有的公式,但使用SORT 函数将您的输入范围倒置。

公式:

=SORT(ARRAYFORMULA(VLOOKUP(ROW(1:16),{IF(LEN(SORT(A1:A16,ROW(A1:A16),0))>0,ROW(1:16),""),SORT(A1:A16,ROW(A1:A16),0)},2)),ROW(A1:A16),0)

如果在单元格B1 中对数据A1:A16 使用,将产生以下结果:

    A    |    B
===================
       1 |       1
---------+---------
         |       3
---------+---------
       3 |       3
---------+---------
         |       4
---------+---------
       4 |       4
---------+---------
 asaffas | asaffas
---------+---------
         |      sd 
---------+---------
      sd |      sd
---------+---------
         |    fefe
---------+---------
         |    fefe
---------+---------
         |    fefe
---------+---------
    fefe |    fefe
---------+---------
         |    1000
---------+---------
         |    1000
---------+---------
         |    1000
---------+---------
   1000  |    1000
---------+---------

这个公式的概要:

  • A1:A16中的值并从下到上排序
  • 如果此排序数组中的相应单元格有数据,则创建一个包含行号的范围,如果该单元格为空白,则创建一个包含行号的区域""
  • 创建一个包含两个范围的数组:第一个是上一步中的范围,第二个是已排序的单元格
  • 使用VLOOKUP在这个新数组中搜索空白单元格,如果单元格为空白则返回排序范围内的对应值
  • 再次对返回范围进行排序,以正确的方式将其返回

注意事项:

  • 范围只能是一列
  • 如果指定范围的底部有空单元格,则最底部单元格下方的所有单元格将显示#N/A
    • (例如,如果您指定范围A1:A18,但在A列中最后一个有数据的单元格是A16,那么B17B18将显示#N/A

参考资料:

相关问题:

【讨论】:

    【解决方案2】:

    通用解决方案:

    获取第一个非空单元格的行号的通用方法,从下到上在一个范围内:

    =ARRAYFORMULA(ROWS(A1:A10)-MIN(IF(SORT(A1:A10,ROW(A1:A10),0)<>"",ROW(A1:A10)))+1)
    

    这个公式的概要:

    • 根据其各自的行号从下到上对范围 A1:A10 进行排序
    • 查找此范围内包含内容的最小行号
    • 从该范围内的总行数中减去该数字
    • 加一以更正 0 索引

    参考资料:

    【讨论】:

    • 嗯...我已经尝试过了,但它似乎对我不起作用。它只是在粘贴公式的单元格中给了我一个数字...
    • 这正是它所做的——它“从下往上查找第一个非空单元格”。如果您给我一组示例数据或经过消毒的工作表,那么我可能会为您提供进一步的帮助
    • 当然!我已经创建了这张表
    • 在第一个选项卡中,有公式,在第二个选项卡中,我想要得到的结果是红色的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2023-03-23
    • 2014-09-22
    • 2015-07-24
    相关资源
    最近更新 更多