在给定的列中,如何找到最后一个具有值的单元格?

时间:2018-08-05 19:23:41

标签: google-apps-script google-sheets

我当前正在使用Google应用脚本。我在列中有3个列表,在编辑它们时,我需要检查该列中的数量。每列分配三个人,如果一列下降到1列,而其他列则下降到3列,那么我将在列表中重新分配这些人。

那么,我可以在给定的列上“ getLastRow”吗? range类具有getLastRow可用,但是,range函数本身似乎未返回具有值的单元格,例如

Logger.log(sheet.getRange("B:B").getLastRow());

返回'999.0'-内容的最后一行是第6行。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:1)

除了getValues()并检查每个值外,没有其他方法。

var lastRow = -1;
sheet.getRange("B:B")
          .getValues()
          .some(function(e){
                lastRow++;
                return !(e[0])
            });
Logger.log(lastRow);

如果还要在脚本中使用所有这些值,则可以使用map

var flattenedValues = sheet.getRange("B:B").getValues().map(function(e){
    return e[0]; //flatten Array
});
var lastRow = flattenedValues.indexOf('');
Logger.log(lastRow);

也使用

sheet.getRange("B1:B"&sheet.getLastRow());

将有助于避免一堆空值。

以上所有功能均假定没有空白。如果存在,则倒转以找到lastRow。

参考文献: