我具有以下功能。第一行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
中的整个数组和单个值可以很好地工作。
答案 0 :(得分:0)
我不确定这是否对提问者有所帮助。无论如何,这是Stack Overflow中我最喜欢的代码(贷记Mogsdad,他又将其从另一个答案改编为另一个问题。这就是实际中的Stack Overflow的力量。)
要确定单列中的最后一行-(在2行代码中完成):
var Avals = ss.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
您可以通过更改范围的方向对列执行相同的操作。