Funciona a partir do Excel 2007. Selecione C3
e coloque esta fórmula:
=IFERROR(INDIRECT("A"&MAX(ROW(B$2:B2)*(B$2:B2=B3))),"")
Confirme a fórmula por ctrl + deslocamento + digite .
Arraste (ou copie) até onde for necessário.
Digamos que eu tenha uma tabela com três colunas (a ordem é importante e não pode ser alterada), as linhas são classificadas por A:
A B C
date ID last_date
10/05/2015 29A06E95
10/08/2015 E5A884C4
10/12/2015 D24F4975
10/12/2015 D24F4976
10/21/2015 29A06E95
Para qualquer linha, se o ID também aparecer em qualquer linha acima do atual, quero preencher a coluna C com a data mais recente (ou, como as linhas são classificadas por A, o valor de data da linha anterior com o mesmo ID). Por exemplo, aqui o resultado seria assim:
A B C
date ID prev_date
10/05/2015 29A06E95 <blank>
10/08/2015 E5A884C4 <blank>
10/12/2015 29A06E95 10/05/2015
10/12/2015 D24F4976 <blank>
10/21/2015 29A06E95 10/12/2015
Como faço isso (não consegui usar MATCH ou VLOOKUP, pois o primeiro encontra a primeira correspondência e o segundo quer o valor da pesquisa na primeira coluna)?
Além disso, vi soluções com fórmulas de matriz, mas elas não funcionam dentro de um contexto de tabela de dados.
Você não pode simplesmente criar uma segunda planilha com as colunas e datas invertidas? Porque então as soluções são um simples vlookup.
Acho que isso deve ser feito:
=IFERROR(IF(A2=INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0)),"",INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0))),"")
Coloque isso em C2, edite os intervalos conforme necessário, insira como uma matriz (com CTRL + SHIFT + ENTER ) e arraste para baixo.
Edit: Ok, esqueça, aparentemente as matrizes não estão funcionando? Você pode esclarecer o que você entende por "contexto de tabela"? As fórmulas do AFAIK Array ainda devem funcionar com tabelas, não?