我使用下面的函数

=DAYS360(A2, A35)

计算我列中两个日期的差值。然而,列一直在扩大,我目前必须手动更改“A35”,因为我更新了我的电子表格。

是否有一种方法(在谷歌表)找到该列中的最后一个非空单元格,然后在上面的函数中动态设置该参数?


当前回答

对于严格地查找列中的最后一个非空单元格,这应该工作…

=LOOKUP(2^99, A2:A)

其他回答

这对我很有用。获取谷歌表中A列的最后一个值:

=index(A:A,max(row(A:A)*(A:A<>"")))

(如果有空白行,它也会跳过空白行)

要找到最后一个非空单元格,可以使用INDEX和MATCH函数,如下所示:

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))

我觉得这样更快更简单。

通过LAMBDA和REDUCE函数的引入,我们现在可以在一次遍历单元格中计算行号(上面的几个解决方案过滤了两次范围),而不依赖于神奇的文本或数值。

=lambda(rng, 
   REDUCE(0, rng, lambda(maxrow, cell, if(isblank(cell),maxrow,row(cell)) ) )
)(A:A)

它可以很好地打包成一个命名函数的用法,如

=LAST_ROWNUM(A:A)

它适用于具有穿插空格的列、多列范围(因为REDUCE在行优先的范围内迭代)和部分列(如A20:A),仍然返回实际的行号(而不是范围内的偏移量)。

然后可以将其与Index组合以返回值

=DAYS360(A2, Index(A1, LAST_ROWNUM(A:A)))

(事实上,我怀疑OPs日期值是单调的(即使中间有空格),他可以侥幸逃脱

=DAYS360(A2, MAX(A2:A))

上面的解决方案是依赖于“连续”的日期——这是否意味着“没有空白”或“没有缺失日期”我不确定——但这两种规定都是不必要的。)

这可能有用:

= DAYS360 (A2,指数(A2:, COUNTA (A2: A)))

在一列任意的非空值中选择最后一个,忽略标题单元格(A1):

=INDEX(A2:A,COUNT(A2:A))