Obtenha a última ocorrência em uma lista no Excel

1

Eu tenho uma lista em sheet1 e quero obter a última ocorrência de cada produto diretamente na frente em bank page.

Aqui está a fórmula com a qual estou trabalhando:

=INDEX(sheet1!$Y$52:$Y$1000,SUMPRODUCT(MAX(ROW(sheet1!$I$52:$I$1000)*($C218=sheet1!$I$52:$I$1000))-1))

Ele retorna um resultado que não corresponde ao último resultado esperado.

Eu tentei essa fórmula em outra página de teste que tem apenas 30 itens para pesquisar e funciona bem nesse arquivo. mas no meu arquivo de assunto principal, isso me dá um resultado errado.

Vou anexar meu arquivo para que você possa analisá-lo.

link

e aqui está a captura de tela para os que precisam analisar o problema:

    
por Unknown 29.11.2015 / 10:08

1 resposta

1

Na fórmula que você copiou, aparentemente você não entendeu o significado do -1 . O array começou na linha 2; já que a parte SUMPRODUCT retornou um número de linha absoluto, o -1 compensou isso.

No seu caso, sua matriz começa na linha 52, então você precisa subtrair 51 para compensar.

Por exemplo:

=INDEX(sheet1!$Y$52:$Y$1000,SUMPRODUCT(MAX(ROW(sheet1!$I$52:$I$1000)*($C98=sheet1!$I$52:$I$1000))-51))

Uma fórmula mais curta, para realizar o mesmo propósito:

=LOOKUP(2,1/($C108=sheet1!$I$52:$I$1000),sheet1!$Y$52:$Y$1000)

Isso funciona porque se LOOKUP não encontrar um número igual ou maior que a pesquisa, ele corresponderá ao último número na matriz. A parte 1/... retorna uma matriz de erros 1 e DIV/0 . Portanto, o último 1 corresponde à última instância em que C108 corresponde; e retornamos da posição correspondente na coluna Y .

Aqui estão as capturas de tela que mostram os resultados desejados (de acordo com suas capturas de tela):

    
por 30.11.2015 / 11:58