2015-03-25 2 views
1

У меня возникла проблема с разработкой формулы 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, но с большим количеством записей, которые кажутся слишком интенсивными.

ответ

0

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

=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 система даты.

1

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

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

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

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

и нажмите CTRL + SHIFT + ВВОД.

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

2

Вы могли бы использовать эту регулярную формулу (нет Ctrl + Alt + Enter необходимо), настроить диапазон не подходит:

=VLOOKUP(MAX(INDEX((A2:A7>=--"1/1/2015")*(A2:A7<=--"3/31/2015")*A2:A7,)),A2:B7,2,FALSE) 
+0

Он чувствителен к формату даты, но поскольку OP упоминает «много записей», полезно иметь параметр без массива. – pnuts