Determining the last row in a single column

前端 未结 19 1519
野性不改
野性不改 2020-11-22 10:46

I have a sheet with data in cols A through H.

I need to determine the last row in column A that contains data (it\'s all conti

19条回答
  •  遥遥无期
    2020-11-22 11:24

    I tried to write up 3 following functions, you can test them for different cases of yours. This is the data I tested with:

    Function getLastRow1 and getLastRow2 will return 0 for column B Function getLastRow3 will return 1 for column B

    Depend on your case, you will tweak them for your needs.

    function getLastRow1(sheet, column) {
      var data = sheet.getRange(1, column, sheet.getLastRow()).getValues();
    
      while(typeof data[data.length-1] !== 'undefined'
         && data[data.length-1][0].length === 0){ 
        data.pop();
      }
      return data.length;
    }
    
    function test() {
      var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet6');
      Logger.log('Cách 1');
      Logger.log("Dòng cuối cùng của cột A là: " + getLastRow1(sh, 1));
      Logger.log("Dòng cuối cùng của cột B là: " + getLastRow1(sh, 2));
      Logger.log("Dòng cuối cùng của cột C là: " + getLastRow1(sh, 3));
      Logger.log("Dòng cuối cùng của cột D là: " + getLastRow1(sh, 4));
      Logger.log("Dòng cuối cùng của cột E là: " + getLastRow1(sh, 5));
      Logger.log('Cách 2');  
      Logger.log("Dòng cuối cùng của cột A là: " + getLastRow2(sh, 1));
      Logger.log("Dòng cuối cùng của cột B là: " + getLastRow2(sh, 2));
      Logger.log("Dòng cuối cùng của cột C là: " + getLastRow2(sh, 3));
      Logger.log("Dòng cuối cùng của cột D là: " + getLastRow2(sh, 4));
      Logger.log("Dòng cuối cùng của cột E là: " + getLastRow2(sh, 5));
      Logger.log('Cách 3');
      Logger.log("Dòng cuối cùng của cột A là: " + getLastRow3(sh, 'A'));
      Logger.log("Dòng cuối cùng của cột B là: " + getLastRow3(sh, 'B'));
      Logger.log("Dòng cuối cùng của cột C là: " + getLastRow3(sh, 'C'));
      Logger.log("Dòng cuối cùng của cột D là: " + getLastRow3(sh, 'D'));
      Logger.log("Dòng cuối cùng của cột E là: " + getLastRow3(sh, 'E'));
    
    }
    
    function getLastRow2(sheet, column) {
      var lr = sheet.getLastRow();
      var data = sheet.getRange(1, column, lr).getValues();
    
      while(lr > 0 && sheet.getRange(lr , column).isBlank()) {
        lr--;
      }
    
      return lr;
    }
    
    function getLastRow3(sheet, column) {
      var lastRow = sheet.getLastRow();
      var range = sheet.getRange(column + lastRow);
      if (range.getValue() !== '') {
        return lastRow;
      } else {
        return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
      } 
    }
    

提交回复
热议问题