如何抓取最后一个非空行?

How to grab the last non empty row?

情况是这样的。在这种情况下,我将从第 2 行开始作为起点。在 B 列中,我想记录最后一个非空 A 列的行。例如:B 列中的第一个数据是 2,这是第一行,然后在下一行中,只要 A 列为空,它就会保留“2”,直到我达到 A 列中的值 (1)。当它到达 A 列(第 7 行)中的下一个非空行时,B 中的值现在将保留该值 (7) 并且它将一直保持该值,直到它到达 A 中的下一个非空行,这是第15行等希望我能解释清楚

现在我只在 B2 单元格中使用基本公式:

=if( A2<>1,  min( row(A2), indirect( "b" & (row(A2) -1)  ) ) ,  row( A2) )

然后复制到B列的其他单元格。有用。但我只是想将其转换为 arrayformula() 并且没有运气。有谁知道如何使用 arrayformula 使其工作?

试试这个:

=ArrayFormula(vlookup(row(A2:A24),query({row();ArrayFormula(value(substitute(A3:A24,1,row(A3:A24))))},"select * where Col1>0"),1,true))

它有几个阶段: 首先,它使用 row() 从第一个单元格中获取行号。然后它将 A 列中的所有 1 个单元格替换为相应的行号。然后使用查询删除空值或 0 值。我有一小 table 个:

2 7 15 19

下一阶段是从 a2:a24 中获取每个行号并通过我的 table 进行 vlookup。 使用带有 'true' 参数的 vlookup,它 returns 距 table 最近的值,该值小于测试的行号。所以2returns2、3returns2、4returns2等

使用:

=INDEX(VLOOKUP(ROW(A2:A), {2; FILTER(ROW(A3:A), A3:A<>"")}, 1, 1))