为了账号安全,请及时绑定邮箱和手机立即绑定

确定单个列中的最后一行

确定单个列中的最后一行

确定单个列中的最后一行我在COLS与数据在片材A通过H。我需要确定A包含数据的列中的最后一行(它是所有连续的 - 数据/行中没有间隙)。其他列中的数据也包含比列更多的数据行A,因此我只需要隔离列A。(和/或只是col内的范围A)。我可以在电子表格级别使用=COUNTA(A2:A100)然而,在我对Google Apps脚本解决方案的所有研究中,我似乎都发现需要执行多个功能,包括几十行代码 - 包括大量的i++内容......我可以通过直接抵消来减少复杂性A1。是否可能有特定于列的方法来修改此方法?var aLast = ss.getDataRange().getNumRows();如果需要一个复杂的过程,那就这样吧。但我发现很难想象(甚至更难找到!)一个更简单的解决方案。有人关心开导我(或弹出我的泡泡)?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

如何使用JavaScript技巧?

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

我从这个答案中借鉴了这个想法。该Array.filter()方法在Avals数组上运行,该数组包含A列中的所有单元格。通过对本机函数的构造函数进行过滤,我们只返回非null元素。

这仅适用于单个列; 如果范围包含多个列,则结果filter()将包括来自所有列的单元格,因此位于范围的填充维度之外。


查看完整回答
反对 回复 2019-07-30
?
RISEBY

TA贡献1856条经验 获得超5个赞

虽然没有直接的公式,我可以想到,它不需要几十行代码来找出A列的最后一行。试试这个简单的函数。以正常方式使用其他功能在单元格中使用它=CountColA()

function CountColA(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for(var i = data.length-1 ; i >=0 ; i--){
    if (data[i][0] != null && data[i][0] != ''){
      return i+1 ;
    }
  }}


查看完整回答
反对 回复 2019-07-30
?
繁星coding

TA贡献1797条经验 获得超4个赞

这将基于A列获得表格中的最后一行。

function getLastDataRow(sheet) {
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange("A" + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }              }

这修复了@mrityunjay-pandey部分正确答案。

要扩展此答案以获取最后一行和列,我们可以使用:

function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;}function letterToColumn(letter) {
  var column = 0, length = letter.length;
  for (var i = 0; i < length; i++) {
    column += (letter.charCodeAt(i) - 64) * Math.pow(26, length - i - 1);
  }
  return column;}function getLastDataColumn(sheet) {
  var lastCol = sheet.getLastColumn();
  var range = sheet.getRange(columnToLetter(lastCol) + "1");
  if (range.getValue() !== "") {
    return lastCol;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getColumn();
  }              }function getLastDataRow(sheet) {
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange("A" + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }              }function run() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var [startRow, lastRow] = [2, getLastDataRow(sheet)];
  var [startCol, lastCol] = [1, getLastDataColumn(sheet)];}


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 425 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信