Вот еще один:
=indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),""))))
С окончательным уравнением:
=DAYS360(A2,indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),"")))))
Другие уравнения здесь работают, но мне нравится это, потому что оно упрощает получение номера строки, что, как мне кажется, мне нужно делать чаще. Просто номер строки будет таким:
=max(arrayformula(if(A:A<>"",row(A:A),"")))
Первоначально я пытался найти именно это, чтобы решить проблему с электронной таблицей, но не смог найти ничего полезного, в котором просто указан номер строки последней записи, поэтому, надеюсь, это будет полезно для кого-то.
Кроме того, у этого есть дополнительное преимущество, заключающееся в том, что он работает для любого типа данных в любом порядке, и вы можете иметь пустые строки между строками с содержимым, и он не учитывает ячейки с формулами, которые оцениваются как "". Он также может обрабатывать повторяющиеся значения. В целом это очень похоже на уравнение, которое использует здесь max ((G: G <> "") * row (G: G)), но упрощает выбор номера строки, если это то, что вам нужно. ,
В качестве альтернативы, если вы хотите поместить сценарий в свой лист, вы можете облегчить себе жизнь, если планируете делать это много раз. Вот этот сценарий:
function lastRow(sheet,column) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
if (column == null) {
if (sheet != null) {
var sheet = ss.getSheetByName(sheet);
} else {
var sheet = ss.getActiveSheet();
}
return sheet.getLastRow();
} else {
var sheet = ss.getSheetByName(sheet);
var lastRow = sheet.getLastRow();
var array = sheet.getRange(column + 1 + ':' + column + lastRow).getValues();
for (i=0;i<array.length;i++) {
if (array[i] != '') {
var final = i + 1;
}
}
if (final != null) {
return final;
} else {
return 0;
}
}
}
Здесь вы можете просто ввести следующее, если хотите, чтобы последняя строка на том же листе, который вы в настоящее время редактируете:
=LASTROW()
или если вам нужна последняя строка определенного столбца с этого листа или определенного столбца с другого листа, вы можете сделать следующее:
=LASTROW("Sheet1","A")
И для последней строки конкретного листа в целом:
=LASTROW("Sheet1")
Затем, чтобы получить фактические данные, вы можете использовать косвенные:
=INDIRECT("A"&LASTROW())
или вы можете изменить приведенный выше сценарий в последних двух строках возврата (последние две, поскольку вам нужно будет поместить и лист, и столбец, чтобы получить фактическое значение из фактического столбца) и заменить переменную следующим:
return sheet.getRange(column + final).getValue();
и
return sheet.getRange(column + lastRow).getValue();
Одним из преимуществ этого сценария является то, что вы можете выбрать, хотите ли вы включать уравнения, которые оцениваются как "". Если аргументы не добавлены, будут учитываться уравнения, оцениваемые как «», но если вы укажете лист и столбец, они теперь будут учитываться. Кроме того, есть большая гибкость, если вы хотите использовать варианты сценария.
Наверное, перебор, но все возможно.