Excel - Ejecutar fórmula almacenada como texto

Dav -  
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   -
Hola,

En Excel, me gustaría saber si es posible ejecutar en una celda una fórmula que esté escrita en otra celda como una simple cadena de caracteres.
Así sería posible reemplazar una interminable fórmula "SI" (si no SI, si no SI, etc.) por una búsqueda en una matriz de fórmulas, según el caso que se presente.

Por ejemplo - Supongamos una hoja que convierte unidades de medida (Celsius a Fahrenheit, galones a litros, etc.):
- Una pestaña "Conversión" contiene dos celdas modificables: A1="Valor a convertir" y A2="Conversión a aplicar" y una celda no modificable A3="Resultado".
- Una pestaña "Diccionario de fórmulas de conversión" contiene dos columnas A:NombreFórmula y B:Fórmula. Un ejemplo - en A2 habría "Pulgada->Cm" y en B2 sería ' =Conversión!$A$1*2.54
- En la celda Conversión!A3, ¿es posible utilizar las fórmulas del "Diccionario de fórmulas"???

Otro ejemplo para simplificar aún más mi pregunta:
- Celda A1: '=Si(B1=1;"Verdadero";"Falso") (Nota la apóstrofe delante de la fórmula que la convierte en una simple cadena de texto)
- Celda B1: 1
- Celda A2 ???Ejecuta fórmula inscrita en A1??? : Verdadero

¡Gracias!
Configuración: Windows XP Internet Explorer 6.0

8 respuestas

eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
 
Hola a todos,

De hecho, es posible hacerlo sin VBA pero con un truco.
Lo comparto a modo de información (VBA permite más flexibilidad) pero para una necesidad puntual puede ser útil, especialmente si no te sientes cómodo con VBA.

En una versión antigua de Excel (¿la 4?) había la función =EVALUAR(A2) que permitía calcular el resultado de la función escrita en TEXTO en A2. Por ejemplo A1: 5 A2: '=A1*2.54

La función (más documentada) ha sido desactivada. Si escribo en A3: =EVALUAR(A2) obtengo 'función no válida'.

Sin embargo, al pasar por la definición de un nombre se puede lograr.
Menú 'insertar / nombre / definir...'
nombre: función_variable
hace referencia a: =EVALUAR(Hoja1!$A$2)

En A3 escribo el nombre: =función_variable y obtengo el resultado de '=A1*2.54 es decir 12.7

No he mirado en detalle si es fácilmente aplicable a tu caso porque de todos modos tienes la solución en VBA de gb, pero era una buena oportunidad para recordar este truco.
eric
13