【问题标题】:In a given column, how do I find the last cell that has a value? [duplicate]在给定的列中,如何找到最后一个具有值的单元格? [复制]
【发布时间】:2018-08-05 19:23:40
【问题描述】:

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

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

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

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

有什么想法吗?谢谢。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案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。

    参考资料:

    【讨论】:

    • 感谢您的回复,虽然很遗憾,它可以提供全局的最后一行,但不能提供最后一行的列...为什么在范围类中有这个功能?那么,在您最后的建议中添加“getLastRow”将如何帮助避免空值?
    • 有人提供了一个很好的解决方案。谢谢你的回答。
    • @jamie 这将有助于避免一些,但不是全部//这也很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 2021-10-07
    • 2019-04-13
    相关资源
    最近更新 更多