google-apps-script - GAS:查找给定行中的最后一列
问题描述
我有以下功能。第一个,lastRowF
,查找您给它的列中的最后一行。它完美地工作。
//Finds last row in a given column
function lastRowF(column) {
var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();
for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
return lastRow;
}
第二个,lastColF
,做同样的事情,但对于给定行中的列。或者至少应该。
//Finds last column in a given row
function lastColF(row) {
var lastCol = SpreadsheetApp.getActiveSheet().getMaxColumns();
// var values = SpreadsheetApp.getActiveSheet().getRange("A" + row + ":" + colLetter(lastCol) + row).getValues();
var values = SpreadsheetApp.getActiveSheet().getRange("A2:AB2").getValues();
for (; values[lastCol - 1] == "" && lastCol > 0; lastCol--) {}
return colLetter(lastCol);
}
实际上,该函数只是lastCol
按照最初声明的方式返回。for
循环立即退出。
我已经确定这values
是问题所在,但我不知道为什么,这让我发疯。数组正确填充 -msgBox(values)
列出了行中的所有值 - 但尝试调用单个值只会返回未定义。这对我来说没有任何意义,因为检查整个数组和单个值的lastRowF
效果非常好。
解决方案
我不确定这是否有助于提问者。无论如何,这是Stack Overflow中我最喜欢的一段代码(感谢 Mogsdad, Mogsdad又将其从另一个问题的另一个答案改编而来。这就是 Stack Overflow 的强大功能。)
要确定单列中的最后一行 - (在 2 行代码中完成):
var Avals = ss.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
您可以通过更改范围的方向来对列执行相同的操作。
推荐阅读
- php - 如何制作排行榜
- android - 如何在 Firebase 实时数据库中上传带有附加数据的图像?
- coq - 坚持使用列表归纳的 Coq 证明
- python-3.x - Python - 基于不同的列转置/旋转列
- sql-server - 多个索引或覆盖索引和包含?
- flutter - Flutter 中 ListView.builder 上的 GestureDetector
- jolt - 将一个数组移动到另一个数组中定义的 json 对象中 - JOLT 转换
- python - 如何从python中的列表中删除类型字符串元素?
- c++ - 通过 C++ HDF5 API 读取 H5T_STRING 数据类型
- tensorflow - Tensorflow 1.15 + CUDA + cuDNN 安装使用 Conda