Я создал пользовательскую функцию, используя скрипт Google Apps. (В Google Sheets: tools -> editor script)
Я прошу прощения у профессионалов, если в некоторых случаях я не следовал правилам! Я самоучка создать это.
Он проверит данный диапазон и выведет все значения из последней строки или, если указано, последней соответствующей строки из другого диапазона / подмножества данного диапазона.
Пример использования: LASTROW (A: A, B: D) проверит диапазон A: A для последней непустой строки и возвратит соответствующую строку B: D.
До тех пор, пока число строк равно это будет работать, например. LASTROW (A1: A10, B21: B30)
/**
* Returns the last row in a range, can be single or multi-column.
*
*
* @param {A1:A100} range_to_check Range to find final row
* and returns contents if no range_to_return is specified.
* @param {[B1:E100]} range_to_return [optional] Range for row to be returned.
* i.e if row 3 in range_to_check is final row, then row 3 in range_to_return will be returned.
* @customfunction
*/
function LASTROW(range_to_check,range_to_return) {
// checks range_to_check for final row with non-empty entries
// range_to_return is optional, will return final row of range_to_check if missing
if (Array.isArray(range_to_check)) {
// checks if input is a range/cell reference
// N.B: Google Apps Script parses a cell range as an array of values
for (i=0;i<range_to_check.length;i++) {
// For each row i, check if any columns are non-empty
var final_column_in_row = undefined;
for (j=0;j<range_to_check[i].length;j++) {
if (range_to_check[i][j] !== '') {
final_column_in_row = j;
}
}
if (final_column_in_row != undefined) { // if any columns in row i are non-empty
var final_row = i; // set row i as final column
}
}
if (final_row != undefined) {
// if there exists a non-empty row
if (range_to_return == undefined) {
// and no range_to_return is specified
return [range_to_check[final_row]];
// return the final row of range_to_check
} else {
// if range_to_return is specified
if (range_to_check.length == range_to_return.length) {
// and both ranges have the same number of rows
return [range_to_return[final_row]];
// return the corresponding row from range_to_return
// i.e if final row of range_to_check is 5, returns the 5th row of range_to_return
} else {
throw 'Ranges have different number of rows, or range_to_check is not an array.'
}
}
} else {
return null;
}
} else {
throw 'range_to_check is not a range.';
}
}
Надеюсь, что кто-то там найдет какую-то пользу из этого:)