У меня есть столбец колебания цен с течением времени в столбце A, скажем, цена конкретной акции для аргументов.

В столбце BI нужно узнать, насколько высоко поднялась цена с того момента, пока она не стала меньше текущей суммы.

Поэтому я думаю, что мне нужна формула, которая перебирает все последующие ячейки, пока не будет найдена ячейка <A1, из всех ячеек в этом диапазоне выведите наибольшую.

Любая помощь будет принята с благодарностью! Спасибо :)

1 ответ1

0

Минимальный рабочий пример. Предположим, что цены указаны в C5:C23 , тогда эта формула массива в D5:

=MAX(INDIRECT("C"&ROW()&":C"&(ROW()+MATCH(-1,SIGN(C5:$C$23-C5),FALSE)-2)))

Скопированы результаты в:

Обратите внимание, что ошибки #N/A являются значимыми, они сигнализируют, что ниже нет цены ниже, чем в столбце C слева от ячейки с #N/A

** Редактировать ** Комментарии

Ключевой момент - найти строку с ценой, которая меньше, чем в текущей строке (C5). "Индекс выпадения" - количество строк от текущей строки до строки, где цена меньше. Функция

=MATCH(-1,SIGN(C5:$C$23-C5),FALSE)

возвращает номер строки (считая текущую строку как 1), для которой он находит первое точное совпадение (-1) в массиве, который заполняется знаками различия между массивом цен ниже (C5:$C$23) и текущая цена (C5).

Учитывая этот "индекс удаления", просто создать текстовую ссылку на диапазон перед удалением:

=("C"&ROW()&":C"&(ROW()+MATCH(-1,SIGN(C5:$C$23-C5),FALSE)-2))

а затем используйте INDIRECT() чтобы преобразовать этот текст в ссылку и найти нужный максимум с помощью MAX() .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .