2017-02-01 4 views
0

Я работаю над формулой excel, которая будет ссылаться на таблицу на другом листе в той же книге и возвращать значение на основе текущей даты. До сих пор я мог использовать эту формулу, чтобы вернуть значение, как я предполагаю. Я включил примерную формулу для формулы, чтобы показать методологию.Формула Excel для возврата значения на ближайшую или равную дату

https://i.stack.imgur.com/ThwL0.png

=VLOOKUP(TODAY(),TRANSACTIONS!A:D,4,FALSE) 

В то время как это работает, недостаток в том, что он будет возвращать # N/A, если нет строки, которые имеют точную дату согласования. В случае вышеприведенной таблицы транзакции не происходят ежедневно, поэтому, если заданная дата, возвращаемая TODAY(), не соответствует какой-либо строке в указанной таблице, она нарушает формулу. Моя таблица также содержит «запланированные» или «ожидаемые» транзакции, которые существуют в будущем, что я не могу полагаться на функцию MAX(), чтобы обеспечить правильный результат.

С учетом сказанного, я ищу настройки для этого формулу, которая всегда будет возвращать значение, даже если текущая дата не соответствует строкам точно. Используя приведенное выше изображение в качестве ссылки, если дата, возвращаемая TODAY(), должна быть 2/20/17, результат, который должен дать, должен быть значением в D5, 1566. И наоборот, если дата равна 2/28/17, он должен вернуть значение в D7, 1182.

Открыт для любых предложений, которые достигнут этих результатов. Дайте мне знать, если вам нужно какое-либо уточнение. Благодаря!

ответ

0

Я хотел бы использовать

=IFERROR(VLOOKUP(E2,A:D,4,TRUE),D2) 

, так что если ваша дата падения до самой низкой в ​​колонке А было бы вернуть первое значение столбца D (т.е. значение в ячейке D2)

+0

Это, кажется, работает ... Мне любопытно, как бы - функция IFERROR, как я понял, просто возвращает значение D2, когда VLOOKUP не возвращает действительное значение. Это обычно означает, что в любое время, когда дата, используемая в VLOOKUP, находится между указанными в таблице, единственное значение, которое я получаю взамен, - это значение D2, но это, похоже, не так. – tbozeglav

+0

4-й параметр VLookup установлен в TRUE, который сообщает Excel не искать точное соответствие (как FALSE будет делать). Дополнительную информацию см. В документации MSDN. Поскольку я решил ваш вопрос, вы можете отметить ответ как принятый. Спасибо! – user3598756

+0

@tbozeglav, разве это не работает для вас? – user3598756

0

Использование INDEX MATCH вместо VLOOKUP в рамках IFERROR, уже предложенного выше.

+0

Вот формула, как вы предложили. Однако, когда он отображается как недействительный вызов функции INDEX MATCH, таким образом нарушая формулу. Можете ли вы дать какие-либо предложения по его исправлению? '= IFERROR (INDEX MATCH (TODAY(), A: D), D2)' – tbozeglav

+0

Целью IFERROR является отображение чего-либо вместо NA или ERROR. Способ его работы: = IFERROR (формула, которую вы хотите использовать, формулу или значение, которое вы хотите вместо NA или ERROR). INDEX MATCH настроен по-разному для VLOOKUP, поэтому вы не можете следовать одной и той же строке: = INDEX (D: D, MATCH (TODAY(), A: A, 0)) Вы должны иметь возможность определить, что означает каждый бит кроме 0 в конце. Это может быть -1, 0 или 1. Excel должен сказать вам, что это значит. Формула, которую я бы использовал, будет: = IFERROR (INDEX (D: D, MATCH (TODAY(), A; A, 0)), INDEX (D: D, MATCH (TODAY(), A: A, - 1))) – Bing

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