Fórmula genérica
=LOOKUP(2,1/(A:A""),A:A)
Resumo
Para encontrar o valor da última célula não vazia em uma linha ou coluna, você pode usar a função LOOKUP nesta fórmula surpreendentemente compacta. Como um bônus adicional, esta fórmula não é uma fórmula de matriz e não é volátil.
Explicação
A chave para entender esta fórmula é reconhecer que lookup_value de 2 é deliberadamente maior do que qualquer valor que aparecerá no lookup_vector.
- A expressão A: A "" retorna uma matriz de valores verdadeiros e falsos: (TRUE, FALSE, TRUE,…).
- O número 1 é então dividido por esta matriz e cria uma nova matriz composta por erros de 1 ou divisão por zero (# DIV / 0!): (1,0,1,…). Este array é o lookup_vector.
- Quando lookup_value não pode ser encontrado, LOOKUP irá corresponder ao menor valor seguinte.
- Nesse caso, lookup_value é 2, mas o maior valor em lookup_array é 1, portanto, lookup corresponderá ao último 1 na matriz.
- LOOKUP retorna o valor correspondente em result_vector (ou seja, o valor na mesma posição).
Lidando com erros
Se houver erros no lookup_vector, especialmente se houver um erro na última célula não vazia, esta fórmula precisa ser ajustada. Este ajuste é necessário porque "" os critérios retornarão um erro se uma célula contiver um erro. Para contornar este problema, use ISBLANK com NOT:
=LOOKUP(2,1/(NOT(ISBLANK(A:A))),A:A)
Último valor numérico
Para obter o último valor numérico, você pode adicionar a função ISNUMBER desta forma:
=LOOKUP(2,1/(ISNUMBER(A1:A100)),A1:A100)
Posição do último valor
Se você deseja obter a posição (neste caso, o número da linha) do último valor, pode tentar uma fórmula como esta:
=LOOKUP(2,1/(A:A""),ROW(A:A))
Aqui, alimentamos os números de linha do mesmo intervalo na pesquisa do vetor de resultado e obtemos o número de linha da última correspondência.