我使用下面的函数

=DAYS360(A2, A35)

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

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


当前回答

这将给出最后一个单元格的内容:

=indirect("A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>""))))

这将给出最后一个单元格的地址:

="A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

这将给出最后一个单元格的行:

=max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

也许你更喜欢脚本。这个脚本比上面其他人发布的大脚本要短得多:

进入脚本编辑器,保存脚本:

function getLastRow(range){
  while(range.length>0 && range[range.length-1][0]=='') range.pop();
  return range.length;
}

完成后,你只需要在一个单元格中输入这个:

=getLastRow(A:A)

其他回答

为了找到最后一个非空行号(允许行号之间有空格),我使用下面的方法搜索列A。

=ArrayFormula(IFNA(match(2,1/(A:A<>""))))

也许还有更有说服力的方法,但这是我想到的方法:

查找列中最后一个填充单元格的函数是:

=INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) )

所以如果你把它和你当前的函数结合起来,它会是这样的:

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) ))

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

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

我觉得这样更快更简单。

那么下面这个求最后一个值的公式呢:

=index(G:G;max((G:G<>"")*row(G:G)))

这就是你最初任务的最终公式:

=DAYS360(G10;index(G:G;max((G:G<>"")*row(G:G))))

假设您的初始日期是G10。

我最喜欢:

=INDEX(A2:A,COUNTA(A2:A),1)

所以,对于OP的需求:

=DAYS360(A2,INDEX(A2:A,COUNTA(A2:A),1))