Última aparição do Excel de uma determinada string em uma coluna

Última aparição do Excel de uma determinada string em uma coluna

Estou usando a função LOOKUP para encontrar a última aparição de uma determinada string em uma coluna fornecida, assim:

LOOKUP(A3;Runs!D3:D6;Runs!A3:A6)

No entanto, os limites no vetor são codificados: Executa!A3:A6. Quero que esse valor seja definido dinamicamente para a última célula com dados da coluna. Encontrei esta fórmula que fornece o índice da última linha:

COUNTA(Runs!A:A)

Esta outra função me fornece a referência da célula (o conteúdo da célula), mas não consigo mesclá-la com a fórmula LOOKUP:

INDIRECT("Runs!A"&COUNTA(Runs!A:A))

Existe alguma maneira de definir o limite superior para LOOKUP dinamicamente?

EDIT: não há linhas em branco no intervalo de linhas.

Cumprimentos

Responder1

Entendi - o problema é fazer com que seu intervalo dinâmico funcione como uma especificação de intervalo no LOOKUP. Você estava quase lá. Experimente isto:

    LOOKUP(A3;INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D));Runs!A3:A6)

Responder2

a função offset() resolverá seu problema

substitua Execuções!A3:A6 porDESLOC($A$3,0,0,CONTAR($A$3:$A$1000),1)

você pode ficar um pouco sofisticado com um Dynamic Define Rangehttp://support.microsoft.com/kb/830287

Responder3

Acabei fazendo isso. Obrigado a todos pelos comentários, a resposta do fixer1234 foi especialmente útil. O LOOKUP não estava dando resultados precisos, então mudei para um par INDEX/MATCH. Também foi adicionada uma verificação N/A.

IF(ISNA(INDEX(INDIRECT("Runs!A3:A"&COUNTA(Runs!A:A)), MATCH(A3, INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D)), 0))), "", INDEX(INDIRECT("Runs!A3:A"&COUNTA(Runs!A:A)), MATCH(A3, INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D)), 0)))

informação relacionada