Формула:
=MAX(INDEX(GOOGLEFINANCE(C7, "high", A7, B7), , 2))
… вернет высокую цену акции между датами A7 и B7 в вашем примере. 1
Как это работает?
Используя формулу:
=GOOGLEFINANCE(<symbol>, "high", <StartDate>, <EndDate>)
или
=GOOGLEFINANCE(C7, "high", A7, B7)
(в вашем примере),
… вернетсямассив , который выглядит примерно так:
Используя функцию INDEX()
, вы можете преобразовать этот массив в один столбец высоких значений:
=INDEX(GOOGLEFINANCE(C7, "high", A7, B7), , 2)
Теперь вы можете передать этот массив в функцию MAX()
, чтобы получить наибольшее значение в одной ячейке:
=MAX(INDEX(GOOGLEFINANCE(C7, "high", A7, B7), , 2))
1 Важное примечание:
Если вы включите диапазон дат в функцию «high» GOOGLEFINANCE, онбудет не включать сегодняшнюю цену в течение текущего торгового дня - поэтому, если вам нужно включить максимальную цену сегодняшнего дня в свой диапазон, вам нужно будет сравнить сегодняшняя высокая ценаисторические данные явно.
Например, функция =GOOGLEFINANCE(symbol, "high")
дает вам сегодняшнюю высокую цену, поэтому:
=MAX(GOOGLEFINANCE(C7, "high"), MAX(INDEX(GOOGLEFINANCE(C7, "high", TODAY()-30, TODAY()), , 2)))
… даст вам высокую цену сверхпоследние 30 дней, включая сегодня.
Если существует вероятность того, что ваш диапазон дат может включать только сегодня (т.е. нет исторических данных, где A7 и B7 оба равны сегодня), к сожалению, формулавыше вернет #NA.У меня есть окончательное решение для создания правильного массива, даже если он не содержит исторических данных.
Пуленепробиваемое решение
Приведенная ниже формула перехватывает условие #NA и создает массив для включения сегодняшнего максимума независимо от того, какой диапазон дат указан:
=MAX(INDEX({IFNA(GOOGLEFINANCE(E7, "high", A7, TODAY()), {"Date", "High"}); NOW(), GOOGLEFINANCE(E7, "high")}, , 2))
Я был укушен этой причудой несколько раз, и это решение, похоже, охватывает все сценарии.Наслаждайтесь!