Pregunta

Estoy intentando convertir una cadena de texto en una fórmula, pero mi cadena de texto es un poco inusual porque describe un vínculo entre dos hojas de trabajo.Aquí está la fórmula inicial:

+TEXT("+'X:\Deals\ONE-PAGERS\_One-pagers (vM)\["&TRIM(LEFT(SUBSTITUTE($B9," ",REPT(" ",30)),64))&" vM.xlsx]Metrics'!$D$8",1)

Creé esta fórmula para evitar tener que vincular manualmente una gran cantidad de hojas de cálculo.Captura las dos primeras palabras de una celda y las coloca en una cadena de texto que establecería un vínculo, si fuera una fórmula.De esta manera, puedo simplemente ingresar el nombre de una empresa en la celda B9 y esta fórmula generará una cadena de texto que describe el enlace que deseo.Aquí está el resultado de la fórmula:

+'X:\Deals\ONE-PAGERS\_One-pagers (vM)\[xxx vM.xlsx]Metrics'!$D$8

Como puede ver, si esto fuera una fórmula, generaría un enlace y devolvería el valor en Cell D8 del xxx hoja de cálculo.Probé la solución alternativa de evaluación (que se ve a continuación), así como la función indirecta, y ninguna parece funcionar.¡Avíseme si esto no tiene sentido y muchas gracias de antemano por su ayuda!

Function EvalCell(RefCell As String)
Application.Volatile
EvalCell = Evaluate(RefCell)
End Function
¿Fue útil?

Solución

Tanto Evaluate como INDIRECT requerirían que el libro de trabajo de origen esté abierto, pero podrías usar ExecuteExcel4Macro:

Function EvalCell(RefCell As String)
Application.Volatile True
application.ExecuteExcel4Macro(application.convertformula(mid$(RefCell, 2), xlA1, xlr1c1))
End Function

¡Sin embargo, evitaría usar demasiadas de estas funciones!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top