Declaração do problema
Uma planilha tem nomes em Colunas E e X .
Para cada linha n , En ≠ Xn .
Há números na coluna M correspondentes aos nomes na coluna E ,
e números na coluna AG correspondente aos nomes na coluna X .
Para qualquer linha após a primeira (digamos, Linha 42),
Queremos obter valores para K42 e AF42 das linhas anteriores, se possível.
- Se
E42for "João", encontre a linha mais recente que contém "John" (na colunaEouX). Chame essa linhan. SeEn="John", definaK42igual aMn. SeXn="João", definaK42igual aAGn. -
Se
X42for "Scott", encontre a linha mais recente que contém "Scott" (na colunaEouX). Chame essa linhan. SeEn="Scott", definaAF42igual aMn. SeXn="Scott", definaAF42igual aAGn.
Solução
Naesperançadepreservaralgumasanidade,vamosusarcolunasauxiliares;digamosAReAS.Suponhaque(comonoarquivodeexemplo),osdadosiniciemnaFila2.Insira
=MAX(($E$2:$E2=$E3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)),($X$2:$X2=$E3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))emAR3(ignorandoAR2).TerminarcomCtrl+Deslocar+Introduzir,paratorná-loumafórmuladematriz.Damesmaforma,definaAS3para
=MAX(($E$2:$E2=$X3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)),($X$2:$X2=$X3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))comoumafórmuladematriz.(IssoéomesmoqueAR3excetoqueasduasocorrênciasde$E3foramsubstituídaspor$X3.)
DefinaK3para
=IF($AR3=0,"?", INDEX($A$1:$BG$999, INT($AR3/100), MOD($AR3,100)))
e AF3 para
=IF($AS3=0, "?", INDEX($A$1:$BG$999, INT($AS3/100), MOD($AS3,100)))
(não como fórmulas de array). Estes são os mesmos
exceto que as três ocorrências de $AR3 foram substituídas por $AS3 .
E, claro, arraste / preencha.
As colunas auxiliares localizam as ocorrências anteriores mais recentes dos nomes -
ARn encontra a ocorrência anterior mais recente
de En e
ASn encontra a ocorrência anterior mais recente
de Xn -
basicamente encontrando o máximo, ao longo das linhas anteriores, de
(previous_value=this_value) * ROW())
, ou seja, o número da linha mais alta em que o nome é uma correspondência. Em seguida, ele codifica o local onde o nome foi encontrado como
100*ROW() + COLUMN(data_we_want_to_copy)
Ambas as fórmulas aparecem em Colunas E e X ,
e retornar as coordenadas codificadas
das colunas correspondentes M ou AG cell.
Em seguida, as fórmulas K e AF simplesmente decodificam o endereço da célula
e recuperar o valor.

EntãoAR6é213porque"John" ( E6 ) foi visto mais recentemente na Linha 2,
e, desde que ele foi visto em E2 (em vez de X2 ),
queremos copiar o valor da coluna 13 (coluna M ).