Цитата |
---|
akc75 написал: Сильно сложная формула для моего уровня знания Excel. |
сначала считаем номер последней строки с 0, расположенной выше.
на примере расчета для 9 строки:
Код |
---|
=ЕСЛИ(
(A10=0)*(A9<>0); ' тут определяем, что это последняя ячейка - после нее идет 0, но она не равна 0.
МАКС(СТРОКА($A$1:A9)*(($A$1:A9=0)+ЕТЕКСТ($A$1:A9)));
' самая сложная часть:
' (1) берем массив номеров строк от 1 до текущей (9), получаем {1;2;3;4;5;6;7;8;9}
' (2) проверяем значения в ячейках столбца А от 1 до текущей на следующие условия: =0 ИЛИ это текст.
' Получаем для (2) следующий резульат: {ИСТИНА;ИСТИНА;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ}
' умножаем (1) на (2), при этом ИСТИНА и ЛОЖЬ становятся 1 и 0.
' результат умножения: {1;2;0;0;0;0;0;0;0}
' Считаем МАКС по этому массиву, получаем 2.
0) ' ну или возвращаем 0, если условие не выполнено |
Потом проще: если значение предыдущего расчета равно 0, то пишем пустую строку.
Если оно не равно 0, то значит оно равно номеру строки с последним 0/текстом выше.
Используем функцию СМЕЩ для получения диапазона от A1, смещенного на наше число (для этого примера новый диапазон начнется с А3), без смещения по столбцам, высотой равной (номер текущей строки) - результат предыдущего расчета. Текущая строка равна 9, 9-2 =7, получаем в итоге диапазон А3:А9.
Вот по нему считаем МАКС и МИН, чего и хотели.
Можно на самом деле написать более правильную, нелетучую, через ИНДЕКС+ПОИСКПОЗ, например, или тот же АГРЕГАТ, но немного лень