首页 > 解决方案 > 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效果非常好。

标签: google-apps-scriptgoogle-sheets

解决方案


我不确定这是否有助于提问者。无论如何,这是Stack Overflow中我最喜欢的一段代码(感谢 Mogsdad, Mogsdad又将其从另一个问题的另一个答案改编而来。这就是 Stack Overflow 的强大功能。)

要确定单列中的最后一行 - (在 2 行代码中完成):

var Avals = ss.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;

您可以通过更改范围的方向来对列执行相同的操作。


推荐阅读