2013-06-08 12 views
1

Я пытаюсь отобразить заголовок столбца, что его ячейка, содержащая дату, является ближайшей (из 3 других ячеек с датами, B2: D2) к конкретная ячейка (A2)Excel: соответствие ближайшей дате из диапазона дат

Так вот мой лист:

 A   B   C   D 
1 | T1 |  T2 | T3 | T4 | 
2 | 5/1/2013 | 5/31/2013 | 2/5/2013 | 3/2/2013 | 

A2 = a date. 
B2:D2 = 3 dates, can also be blank 

Я попытался с помощью следующей формулы массива, который я нашел в Интернете:

=IF(COUNT($B2:$D2)>0,INDEX($B$1:$D$1,MATCH(MIN(ABS($B2:$D2-$A2)),ABS($B2:$D2-$A2),0)),"") 

Но иногда, когда есть только одна или две даты, ives меня неправильный заголовок. Я также хотел бы избежать использования формул массива, но не мог преобразовать его в обычный.

бы высоко ценит помощь по этому вопросу

+0

Кажется, что работает для меня. Приведите пример ситуации «одна или две даты». –

ответ

2

Можете ли вы дать экземпляр были формула массива вы используете не работает? Он работал для дел, которые я пробовал.

Вы можете избежать использования формулы массива, если вы готовы иметь другую строку с разницей в датах и ​​ячейке даты A2.

Нажмите ваши строки на одну строку вниз, так что заголовки по строке 2 и даты на строке 3 и введите следующую формулу по строке 1, начиная с ячейки B1

=ABS(B3-$A$3) 

Перетащите это через и введите следующий ГПР, чтобы получить заголовок строки

=HLOOKUP(MIN(B1:D1),B1:D3,2,FALSE) 

, если вы не можете перемещать строки вниз по какой-то причине вы можете использовать комбинацию MATCH и INDEX (что медленнее). Если бы вы были поставить разность функцию = ABS (В2 $ A $ 2) через ряд 7 формула будет

=INDEX(B1:D1,1,MATCH(MIN(B7:D7),B7:D7,0)) 
+0

Спасибо за это! – natiz

1

Хорошо, так что ответ был довольно прост.

Я вернулся к листу, чтобы исследовать сценарии, в которых это происходит. Кажется, что когда A2 пусто (= нет даты для сравнения), он просто выдает единственную дату, доступную от B2: D2.

Просто добавив другое условие в оператор IF, который будет работать, только если A2 имеет значение, разрешающее проблему. Таким образом, мы проверить, если оба A2 и B2: D2 имеет значение в них (с B2: D2 должны быть по крайней мере один:

=IF(AND(COUNT($B2:$D2)>0,$A2>0),......) 

и здесь полной формуле

=IF(AND(COUNT($B2:$D2)>0,$A2>0),INDEX($B$1:$D$1,MATCH(MIN(ABS($B2:$D2-$A2)),ABS($B2:$D2-$A2),0)),"") 

Спасибо за заставляет меня вернуться к расследованию: D

1

для альтернативы, не являющийся массивом, вы можете попробовать:

=LOOKUP(2,1/FREQUENCY(0,ABS(B2:D2-A2)),B$1:D$1) 

на месте INDEX(...) часть формулы.

Смежные вопросы