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)))