如何找到范围的最后一行?

问题描述 投票:2回答:2

当我使用sheet.getLastRow();它返回包含内容的最后一行。

但是当我使用range.getLastRow();它返回范围的最后一行,而不考虑其中的内容。

任何人都可以建议找到该范围内最后一个被占用的细胞。

google-apps-script google-sheets
2个回答
0
投票

您可以在列表中创建一个循环,作为getRange()的返回.getValues()检查列表中的当前位置是否为空。

function getLastRowWithTextInARange() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(1,1,5,1).getValues();

  for (var i=0; i<range.length; i++){
    if (range[i][0] == ""){
      Logger.log("Last row with content in the range.");
      break;
    } else {
      Logger.log(range[i][0]);
    }
  }  
}

0
投票

我给了一段代码作为previous post的一部分,它返回填充范围(对于一列)。你可以测试它如下:

function readRows() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');

  var values = getPopulatedRange(sheet,"B").getValues(); // assuming Col B is your range
  var lastCell = "B" + values.length;
  var lastCellValue = values.reverse()[0];

  Logger.log(values); // gives all values upto the final populated in your range
  Logger.log(lastCell); // shows the last cell in notation like: B8
  Logger.log(lastCellValue); // shows the last populated cell value

};

function getPopulatedRange(ss,column) { //Returns the range in a single column from row 1 to the last populated cell in that column
  var lastRow = ss.getMaxRows();
  var values = ss.getRange(column + "1:" + column + lastRow).getValues();
  for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
  return ss.getRange(column  + "1:" + column + lastRow);
}
© www.soinside.com 2019 - 2024. All rights reserved.