Извлечение года с максимальным значением для календарного дня Google Sheets

#google-sheets #google-sheets-formula

#google-sheets #google-sheets-формула

Вопрос:

У меня есть лист с ежедневными показаниями уровня и температуры озера. Я хочу извлечь максимальный уровень для каждого дня года вместе с годом, в котором произошло чтение. Если это произошло более одного раза в один и тот же день года, я бы хотел, чтобы это произошло в первый раз. Достаточно просто получить максимальное значение для каждого дня, но я не смог также извлечь год. Я уверен, что есть другие люди, гораздо более сведущие в GSheets, чем я, которые могут это понять. Я также ожидаю, что это не так сложно, но я еще не смог найти что-то, что работает.

Вот таблица: https://docs.google.com/spreadsheets/d/1kC3L0oDpnnJlFFuB76mUXiz3vGcfT5_fC3YbkE9Xgsg

Комментарии:

1. Я понял это, хотя это, конечно, не самый быстрый способ и, вероятно, не самый элегантный. Вот что я использовал: =запрос (A: B, «выберите B, A где месяц (A) 1 = 1 и день (A) = 1 порядок по B desc, ограничение по возрастанию 1»). Затем я отформатировал столбец с результирующей датой, чтобы показывать только год.

2. Я не совсем уверен, что вы пытаетесь сделать: вы пытаетесь получить максимальную температуру каждого дня? Или просто пытаетесь найти абсолютную самую высокую температуру и узнать, в каком году это было?

3. Для каждого дня календарного года мне нужен максимальный уровень и год, в котором он произошел. Данные начинаются с 1907 года, поэтому для каждого календарного дня (т. Е. 25 января) имеется не менее 114 точек данных. Решение, которое я придумал, довольно медленное, но оно работает, так что это так. Это гораздо проще сделать с базой данных, как мы делали в прошлом, но нам приходится отказаться от них из-за требований нашей штаб-квартиры.

Ответ №1:

ОБНОВЛЕНИЕ: нужный вам макет немного отличался от того, что я сначала подумал. Этот запрос сгенерирует максимальное и минимальное значения за день для ваших данных. ссылка на образец таблицы

 =ARRAYFORMULA(QUERY({1*(TEXT('raw data'!A2:A,"mmm d ")amp;2020),IF('raw data'!B2:C=0,,'raw data'!B2:C)},"select Col1,MAX(Col2),MIN(Col2),MAX(Col3),MIN(Col3) where Col1 is not null group by Col1 order by Col1 label Col1'Day'"))
 

Затем эта формула будет использовать эти дни и значения для выполнения VLOOKUP обратно в необработанные данные, чтобы показать первый год, в котором это значение имело место для этого дня.

 =ARRAYFORMULA(VLOOKUP(N(C4:D)amp;TEXT(B4:B,"mmm d"),{'raw data'!B:Bamp;TEXT('raw data'!A:A,"mmm d"),YEAR('raw data'!A:A)},2,0))
 

Эта электронная таблица будет доступна вечно.