Как найти определенный индекс значения, которое встречается в таблице несколько раз

Как найти определенный индекс значения, которое встречается в таблице несколько раз

У меня есть функция 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)
(это все еще формула массива)

введите описание изображения здесь

Связанный контент