Вот еще один:
=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)), но облегчает вытаскивание номера строки, если вы хотите .
В качестве альтернативы, если вы хотите разместить скрипт на своем листе, вы можете упростить себе задачу, если планируете делать это много. Вот этот scirpt:
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();
Одним из преимуществ этого сценария является то, что вы можете выбрать, хотите ли вы включить уравнения, которые оцениваются как "". Если никакие аргументы не добавлены, уравнения, оценивающие "", будут подсчитаны, но если вы укажете лист и столбец, они теперь будут подсчитаны. Кроме того, есть большая гибкость, если вы хотите использовать варианты сценария.
Вероятно, излишнее, но все возможно.