2013-04-24 34 views
1

當我使用sheet.getLastRow();它返回包含內容的最後一行。如何查找範圍的最後一行?

但是,當我使用range.getLastRow();它返回該範圍的最後一行,而不考慮其中的內容。

任何人都可以提出一種方法來查找範圍內的最後佔用的單元格。

在此先感謝。

回答

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); 
} 
0

以前的答案與目標距離的情況只討論覆蓋一列,下面提供的功能是什麼,我習慣:

var targetRange = SpreadsheetApp.getActiveSheet().getRange(1,1,4,3); 
var lastRowOfTargetRange = getLastRowOfRange(targetRange); 


function getLastRowOfRange (range) { 

    var rangeValues = range.getValues(); 
    var columns = range.getNumColumns(); 
    var lastRowHasContent = 0; 

    for (var i = 0; i < columns; i++) { 
    var rowsCount = 0; 
    while (rangeValues[rowsCount][i]) { 
     rowsCount++; 
    } 
    if (rowsCount > lastRowHasContent) 
     lastRowHasContent = rowsCount; 
    } 

    return lastRowHasContent; 

}