У меня есть функция Excel, которая находит индекс в AmountNamedRange второй по величине суммы, учитывая, что его соответствующий DateNamedRange находится в течение последних тридцати дней.

=ArrayFormula(Match(Large(If(DateNamedRange > Today() - 30, AmountNamedRange, 0), 2), AmountNamedRange, 0))

Это работает достаточно хорошо, если в таблице нет других строк с таким же количеством. Однако, если такая вещь существует, эта формула дает индекс первой строки с той же суммой, что и вторая по величине сумма за последние тридцать дней. Я понимаю, что мое объяснение сбивает с толку, поэтому вот пример (предположим, сегодня 31.01.2017):

1    Date          Amount
2    12/2/2016     27
3    12/6/2016     66
4    12/15/2016    99
5    1/8/2017      45
6    1/20/2017     27
7    1/22/2017     18

В этом случае вторая по величине сумма за последние 30 дней - 27 (индекс 6), но моя формула вернет индекс 2, потому что Match находит первую строку в таблице, которая соответствует сумме. Как я могу изменить мою формулу, чтобы правильно вернуть 6?

1 ответ1

1

Вы должны использовать то же выражение, что и второй параметр MATCH который вы использовали для LARGE , поэтому оно будет смотреть не только на суммы, но только на суммы за последние 30 дней:

=MATCH(LARGE(IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 2), IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 0)
(это все еще формула массива)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .