Является ли функция Excel VLOOKUP лучшим выбором для моего приложения?

Является ли функция Excel VLOOKUP лучшим выбором для моего приложения?

У меня есть файл Excel, который отслеживает максимальную высоту солнца в течение года, по одной строке в день, учитывая определенную широту/долготу. Если я редактирую широту/долготу, ежедневная максимальная высота меняется.

Я хотел бы написать формулу, которая запрашивает всю базу данных (2 столбца, 366 строк) и возвращает мне день, когда солнце впервые достигает заданной высоты, а затем день, когда оно уже не достигает этой высоты.

Например, в Гонолулу максимальный угол возвышения Солнца составит 80 градусов 1 мая и останется на уровне 80 градусов или выше (один раз в день) до 19 августа, когда он снова опустится ниже 80 градусов.

Мне нужна функция Excel, которая генерирует эти две даты, учитывая, что у меня уже есть данные о высоте.

Спасибо!

решение1

Решением здесь является использование комбинации INDEX()и MATCH()в формуле массива.

Я написал две формулы массива, решающие эту задачу.

Дата начала: {=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 0), 1)}

Дата окончания: {=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 1), 1)}

Вот как они работают

  • Elevationэто именованный диапазон, который содержит все высоты за год, Find_Elevationэто именованный диапазон, который является тем, который мы ищем. В вашем примере это80
  • Выражение (Elevation>=Find_Elevation)возвращает массив TRUEи FALSE(вот почему это должна быть формула массива). Оно возвращает TRUEвсякий раз, когда высота для каждого дня больше или равна высоте, которую вы ищете.
  • Функция MATCH()с третьим аргументом 0возвращает индекс первого раза, когда она видит TRUE. Это индекс первого дня, когда солнце находится над высотой, которую вы ищете.
  • Использование третьего аргумента 1в MATCH()функции возвращает последнее время, когда она видит TRUE. Это индекс последнего дня, когда солнце находится выше высоты, которую вы ищете.
  • Мы передаем оба этих параметра в качестве второго аргумента INDEX(), и он возвращает дату, соответствующую значению, возвращаемому функциейMATCH()

Я использовал FormulaChop для создания приведенных выше формул (полное раскрытие информации: я написал FormulaChop). Здесьскриншот того, как FormulaChop отображает эту формулу.Здесьссылка на электронную таблицу, которая демонстрирует формулу. Извините, пожалуйста, за то, что мне пришлось выдумать солнечные высоты.

Связанный контент