
Fórmula genérica
=LOOKUP(2,1/(TEXT(dates,"mmyy")=TEXT(A1,"mmyy")),values)
Resumo
Para consultar a última entrada em uma tabela por mês e ano, você pode usar a função LOOKUP com a função TEXT. No exemplo mostrado, a fórmula em F5 é:
=LOOKUP(2,1/(TEXT($B$5:$B$13,"mmyy")=TEXT(E5,"mmyy")),$C$5:$C$13)
onde B5: B13 e E5: E7 contêm datas válidas e C5: C13 contém valores.
Explicação
Nota: o lookup_value de 2 é deliberadamente maior do que qualquer valor no lookup_vector, seguindo o conceito de bignum.
Trabalhando de dentro para fora, a expressão:
(TEXT($B$5:$B$13,"mmyy")=TEXT(E5,"mmyy"))
gera strings como "0117" usando os valores na coluna B e E, que são comparados entre si. O resultado é uma matriz como esta:
(TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE)
onde TRUE representa datas no mesmo mês e ano. O número 1 é então dividido por esta matriz. O resultado é uma matriz de erros de 1 ou divisão por zero (# DIV / 0!):
(1;1;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!)
que entra em LOOKUP como a matriz de pesquisa. LOOKUP assume que os dados estão classificados em ordem crescente e sempre faz uma correspondência aproximada. Quando o valor de pesquisa 2 não pode ser encontrado, LOOKUP corresponderá ao valor anterior, portanto, pesquisa corresponderá ao último 1 na matriz.
Finalmente, LOOKUP retorna o valor correspondente em result_vector, que contém os valores em C5: C13.