У меня есть функция 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
Вам необходимо использовать то же выражение, что и второй параметр, MATCH
который вы использовали для LARGE
, чтобы он не просто смотрел в суммах, а только в суммах за последние 30 дней:
=MATCH(LARGE(IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 2), IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 0)
(это все еще формула массива)