Выберите значение, связанное с последней датой в таймфрейме

У меня возникли проблемы с разработкой формулы Excel, которая может выбрать самую позднюю дату в заданный период времени. Если бы у меня было это в Excel:

Date         | Value  
Jan 1 2015   | 8  
Jan 26 2015  | 6   
Feb 24 2015  | 3   
Mar 22 2015  | 7  
April 2 2015 | 8  
April 9 2015 | 9

Мне нужна формула, которая могла бы выбрать последнюю дату между Jan 1 2015 и March 31 2015 (то есть March 22 2015), а затем дать ее значение (7).

Вторая часть проста, я думаю, с помощью VLOOKUP, но первая часть меня смущает. Я думал о том, чтобы иметь несколько вложенных операторов IF, но с большим количеством записей, которые кажутся слишком трудоемкими.


person Gabriel Brown    schedule 25.03.2015    source источник


Ответы (4)


Вы можете использовать эту обычную формулу (не требуется ctrl+alt+enter), настроить диапазоны в соответствии с требованиями:

=VLOOKUP(MAX(INDEX((A2:A7>=--"1/1/2015")*(A2:A7<=--"3/31/2015")*A2:A7,)),A2:B7,2,FALSE)
person tigeravatar    schedule 25.03.2015

Вы можете рассчитать максимальную дату в диапазоне с помощью следующей формулы массива:

=MAX(IF((A2:A10>=startDate)*(A2:A10<=endDate),A2:A10)

Замените A2:A10 своим диапазоном и введите даты. Подтвердить с помощью Ctrl+Shift+Enter

person BrakNicku    schedule 25.03.2015

=VLOOKUP(MAX(A:A*(A:A>=DATE(2015;1;1))*(A:A<DATE(2015;3;31)));A:B;2;FALSE)

и нажмите CTRL+SHIFT+ENTER.

A:A — столбец с датами B:B — столбец со значениями

person AnalystCave.com    schedule 25.03.2015

Пожалуйста, попробуй:

=INDEX(B:B,MATCH(MAX(IF(A:A<42094,A:A)),A:A,0))  

с помощью Ctrl+Shift+Enter.

Пример показывает Jan 1 2015 (спасибо за раскрытие соглашения о месяце и дне), но чтобы избежать неправильного возврата, когда последняя доступная дата предшествует началу таймфрейма:

=INDEX(B1:B11,MATCH(MAX(IF(A1:A11<42094,IF(A1:A11>42005,A1:A11)),0),A1:A11,0))  

(также формула массива, диапазон которой был ограничен, чтобы уменьшить риск задержек).

Система дат 1900 года.

person pnuts    schedule 25.03.2015