Eu tenho uma função do Excel que localiza o índice AmountNamedRange
do segundo maior valor, uma vez que o correspondente DateNamedRange
está nos últimos trinta dias.
=ArrayFormula(Match(Large(If(DateNamedRange > Today() - 30, AmountNamedRange, 0), 2), AmountNamedRange, 0))
Isso funciona bem o suficiente, desde que não haja outras linhas na tabela com a mesma quantidade. Se existe, porém, essa fórmula fornece o índice da primeira linha com a mesma quantidade que a segunda maior quantidade nos últimos trinta dias. Percebo que minha explicação é confusa, então aqui está um exemplo (suponha que hoje seja 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
Nesse caso, o segundo maior valor nos últimos 30 dias é 27 (índice 6), mas minha fórmula retornará o índice 2 porque Match
localiza a primeira linha da tabela que corresponde ao valor. Como posso modificar minha fórmula para retornar corretamente 6?
Large()
retorna. Nesse caso, ele deve ser 6 porque o índice 2 não está dentro do intervalo de 30 dias.Respostas:
Você precisa usar a mesma expressão que o segundo parâmetro para o
MATCH
qual você usouLARGE
, para que ele não apareça apenas em Montantes, mas apenas os montantes nos últimos 30 dias:=MATCH(LARGE(IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 2), IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 0)
(ainda é uma fórmula de matriz)
fonte