確定單個列中的最后一行我在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()將包括來自所有列的單元格,因此位于范圍的填充維度之外。
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 ;
}
}}
繁星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)];}添加回答
舉報
0/150
提交
取消
