Estoy usando la función BUSCAR para encontrar la última aparición de una cadena determinada en una columna proporcionada, como esta:
LOOKUP(A3;Runs!D3:D6;Runs!A3:A6)
Sin embargo, los límites en el vector están codificados: ¡Ejecuta!A3:A6. Quiero que este valor se establezca dinámicamente en la última celda con datos de la columna. Encontré esta fórmula que da el índice de la última fila:
COUNTA(Runs!A:A)
Esta otra función me da la referencia de la celda (el contenido de la celda), pero parece que no puedo fusionarla con la fórmula BUSCAR:
INDIRECT("Runs!A"&COUNTA(Runs!A:A))
¿Hay alguna forma de establecer el límite superior para BUSCAR dinámicamente?
EDITAR: no hay filas en blanco en el rango de filas.
Saludos
Respuesta1
Lo entiendo: el problema es lograr que su rango dinámico funcione como una especificación de rango dentro de BUSCAR. Ya casi estabas allí. Prueba esto:
LOOKUP(A3;INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D));Runs!A3:A6)
Respuesta2
la función offset() resolverá tu problema
reemplace ¡Ejecuta! A3: A6 conCOMPENSACIÓN($A$3,0,0,CONTARA($A$3:$A$1000),1)
puedes ser un poco sofisticado con un rango de definición dinámicahttp://support.microsoft.com/kb/830287
Respuesta3
Terminé haciendo esto. Gracias a todos por sus comentarios, la respuesta de fixer1234 fue especialmente útil. La BÚSQUEDA no daba resultados precisos, así que la cambié por un par ÍNDICE/COINCIDENCIA. También se agregó un cheque 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)))