我使用下面的函数
=DAYS360(A2, A35)
计算我列中两个日期的差值。然而,列一直在扩大,我目前必须手动更改“A35”,因为我更新了我的电子表格。
是否有一种方法(在谷歌表)找到该列中的最后一个非空单元格,然后在上面的函数中动态设置该参数?
我使用下面的函数
=DAYS360(A2, A35)
计算我列中两个日期的差值。然而,列一直在扩大,我目前必须手动更改“A35”,因为我更新了我的电子表格。
是否有一种方法(在谷歌表)找到该列中的最后一个非空单元格,然后在上面的函数中动态设置该参数?
当前回答
那么下面这个求最后一个值的公式呢:
=index(G:G;max((G:G<>"")*row(G:G)))
这就是你最初任务的最终公式:
=DAYS360(G10;index(G:G;max((G:G<>"")*row(G:G))))
假设您的初始日期是G10。
其他回答
业余爱好者的方法是“=CONCATENATE(“A”,COUNTUNIQUE(A1:A9999))”,其中A1是列中的第一个单元格,A9999比我期望的任何条目都要低。这个生成的a#可以根据需要与INDIRECT函数一起使用。
如果列仅按连续添加的日期展开 就像在我的情况下-我只是使用MAX函数来获取最后的日期。
最终公式为:
=DAYS360(A2; MAX(A2:A))
要找到最后一个非空单元格,可以使用INDEX和MATCH函数,如下所示:
=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))
我觉得这样更快更简单。
这是另一个:
=indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),""))))
最终方程是这样的:
=DAYS360(A2,indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),"")))))
这里的其他方程也有用,但我喜欢这个因为它使行号变得容易,我发现我需要经常这样做。仅仅是行号就像这样:
=max(arrayformula(if(A:A<>"",row(A:A),"")))
我最初试图找到这只是解决电子表格的问题,但无法找到任何有用的,只是给出了最后一个条目的行号,所以希望这对某人有帮助。
此外,这还有一个额外的优点,即它适用于任何类型的任何顺序的数据,您可以在有内容的行之间有空白行,并且它不会计算计算公式为“”的单元格。它还可以处理重复的值。总而言之,它非常类似于在这里使用max((G:G<>"")*row(G:G))的方程,但如果这是您想要的,则可以更容易地提取行号。
或者,如果你想在你的工作表上写一个脚本,如果你打算经常这样做,你可以让自己轻松一些。下面是脚本:
function lastRow(sheet,column) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
if (column == null) {
if (sheet != null) {
var sheet = ss.getSheetByName(sheet);
} else {
var sheet = ss.getActiveSheet();
}
return sheet.getLastRow();
} else {
var sheet = ss.getSheetByName(sheet);
var lastRow = sheet.getLastRow();
var array = sheet.getRange(column + 1 + ':' + column + lastRow).getValues();
for (i=0;i<array.length;i++) {
if (array[i] != '') {
var final = i + 1;
}
}
if (final != null) {
return final;
} else {
return 0;
}
}
}
在这里,如果你想让你正在编辑的工作表的最后一行,你可以输入以下内容:
=LASTROW()
或者,如果您想从该工作表中获取特定列的最后一行,或者从另一个工作表中获取特定列的最后一行,您可以执行以下操作:
=LASTROW("Sheet1","A")
一般来说,对于特定表格的最后一行:
=LASTROW("Sheet1")
然后,为了获得实际数据,你可以使用间接方法:
=INDIRECT("A"&LASTROW())
或者你可以在最后两个返回行修改上面的脚本(最后两个,因为你必须把表和列从实际列中获得实际值),并将变量替换为以下内容:
return sheet.getRange(column + final).getValue();
and
return sheet.getRange(column + lastRow).getValue();
这个脚本的一个好处是,您可以选择是否要包含计算为“”的方程。如果没有添加参数,则计算为""的方程将被计数,但如果指定了工作表和列,则它们现在将被计数。此外,如果您愿意使用脚本的变体,则会有很大的灵活性。
可能有点过分,但都有可能。
为了找到最后一个非空行号(允许行号之间有空格),我使用下面的方法搜索列A。
=ArrayFormula(IFNA(match(2,1/(A:A<>""))))