Para encontrar o exemplo mais antigo, mencionado abaixo, é a fórmula: -
=LOOKUP(2,1/(A:A=A2),ROW(A:A))
Para sua melhor compreensão, abaixo está a captura de tela
No excel, existe uma fórmula excel que eu possa usar para preencher a coluna B (no meu exemplo abaixo) que retornará o último número da linha que contém uma string específica, antes da linha atual?
Os dados não são contíguos.
Por exemplo, os dados podem ser:
| A (value) B (prev recent instance)
----------------------------------------------
1 | Mike
2 | John
3 | Mike 1
4 | Tony
5 | Mike 3
6 | John 2
Então, quero expandi-lo para que a coluna C mostre a instância mais antiga.
Parece muito semelhante a esta pergunta: O que é uma fórmula do excel que me retornará o número da última linha de uma célula dentro de um intervalo que contém dados específicos? , entretanto essa pergunta e resposta exigem que os dados sejam contíguos.
Editar: Eu gostaria que a resposta fosse uma Fórmula de Planilha, no entanto, se você acha que é mais apropriado implementar via VBA, inclua isso também em sua resposta com os prós e contras de cada abordagem.
Supondo que seus dados iniciem em A1, experimente esta "fórmula de matriz" em B2
=IF(COUNTIF(A$1:A1,A2),MATCH(2,1/(A$1:A1=A2)),"")
confirmado com CTRL + SHIFT + ENTER e copiado para baixo
ou você pode usar esta versão não matricial
=IF(COUNTIF(A$1:A1,A2),MATCH(2,INDEX(1/(A$1:A1=A2),0)),"")
No Excel 2007 ou posterior, você pode simplificar com o IFERROR, ou seja, a versão do array se torna
=IFERROR(MATCH(2,1/(A$1:A1=A2)),"")
Para a linha "1ª instância" na coluna C, experimente esta fórmula em C1 copiada para baixo
=MATCH(A1,A$1:A1,0)
Observação: as fórmulas não retornam estritamente "números de linhas", mas os números de linhas relativas dos seus dados, ou seja, a linha 1 de seus dados retorna 1, etc.