當我使用sheet.getLastRow();它返回包含內容的最後一行。如何查找範圍的最後一行?
但是,當我使用range.getLastRow();它返回該範圍的最後一行,而不考慮其中的內容。
任何人都可以提出一種方法來查找範圍內的最後佔用的單元格。
在此先感謝。
當我使用sheet.getLastRow();它返回包含內容的最後一行。如何查找範圍的最後一行?
但是,當我使用range.getLastRow();它返回該範圍的最後一行,而不考慮其中的內容。
任何人都可以提出一種方法來查找範圍內的最後佔用的單元格。
在此先感謝。
您可以在列表中創建一個循環,作爲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]);
}
}
}
我已經給一段代碼作爲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);
}
以前的答案與目標距離的情況只討論覆蓋一列,下面提供的功能是什麼,我習慣:
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;
}