Мне пришлось пересмотреть вашу серию вопросов, чтобы увидеть, в чем проблема, но (с небольшими изменениями) формула Ханну в значительной степени верна. Проблема, с которой вы столкнулись при его реализации, заключается в том, что ваш макет электронной таблицы не соответствует тому, что было указано @jbmorch в ответе на ваш предыдущий вопрос.
Расположение было очень четко указано в ответе @ jbmorch и имеет значение по нескольким причинам:
- Вы не указали много деталей о макете вашей электронной таблицы в своем вопросе, за исключением частей вашей псевдо-формулы, которые включали имена листов. Таким образом, @jbmorch и другие должны были спекулировать и создавать свои собственные макеты, чтобы составить соответствующую формулу.
- Без упорядочения столбцов на листе, как указано в ответе, ссылки на столбцы на листе не будут правильными, если вы не настроите их.
- Порядок сортировки в LargerSheet важен из-за того, как функционирует MATCH - если у вас нет строк, отсортированных, как указано в ответе, MATCH не даст точных результатов.
- Ответ @ jbmorch также предполагал (поскольку в противном случае не было предоставлено никакой информации), что ваши данные начинаются со строки 1. Таким образом, их ответ был написан для такой таблицы и будет давать ошибочные результаты, если не будет скорректирована с учетом фактического макета.
Пара других возможных проблем, о которых нужно знать:
- Вы должны убедиться, что все записи даты / времени фактически отформатированы как даты и время, иначе Excel не сможет сделать правильные сравнения. Это можно проверить в параметрах формата в свойствах ячейки, а также, попробовав математические вычисления в отношении ячейки. (например: если A2 содержит
1/7/2003
, а B2 =A2+2
, то значение для B2 должно быть 1/9/2003
).
- Ваш образец листа содержит несколько записей в Sheet1, которые фактически соответствуют критериям, которые вы ищете для возврата значения из LargerSheet. Это делает поиск неисправностей немного проблематичным. Фактически, единственным подходящим я нашел строку 9. (Дата для DAILY, JIM в этом ряду в Sheet1 была фактически в течение двух дней после его последней даты на LargerSheet.)
Тем не менее, вот формула, которая вам нужна. Поместите это в C2 на Sheet1 и скопируйте:
=IF(AND(INDIRECT("LargerSheet!$B"&MATCH($A2,LargerSheet!$A:$A,1))>B2,INDIRECT("LargerSheet!$B"&MATCH($A2,LargerSheet!$A:$A,1))<B2+2),INDIRECT("LargerSheet!$B"&MATCH($A2,LargerSheet!$A:$A,1)),$B2)
Опять же, обратите особое внимание на то, что ваш лист отформатирован в точности так, как показано ниже, иначе формула не будет работать без корректировок.
- Все даты должны быть отформатированы как даты, а не как текст или цифры.
- Оба листа должны иметь имена в столбце A и даты в столбце B, а фактические данные начинаются со строки 2.
- Таблица LargerSheet должна быть отсортирована как по имени (по возрастанию), так и по дате (по возрастанию), причем приоритет сортировки должен быть установлен в этом порядке.
Еще одна вещь, о которой следует знать, это различие между "в течение 2 дней" и "в течение 48 часов" - эта формула использует последнее. То есть, если на Sheet1 время 5/6/2012 03:00:00
и соответствующее значение на LargerSheet равно 5/8/2012 03:00:01
тогда оператор IF будет иметь значение FALSE и вернет значение из Sheet1 вместо одного из LargerSheet. Существенные изменения формулы будут необходимы для учета, если вы хотите сопоставить "любое будущее время в течение следующих двух дней", а не "любое время в течение 48 часов".
Кроме того, поскольку оператор IF использует исключительное время больше (>
) вместо времени больше или равно, точное совпадение приведет к тому, что оно будет оценено как ЛОЖЬ. Если вы хотите, чтобы он оценивал TRUE для точных совпадений, замените >
на >=
.