Excel - Ejecutar fórmula almacenada como texto
Dav
-
eriiic Mensajes publicados 24581 Fecha de registro Estado Colaborador Última intervención -
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!
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
Enlaces relacionados:
- Fórmula de Excel: saber si una celda contiene parte de texto
- Excel si la celda contiene texto entonces...
- Función SI, contiene una cadena de caracteres
- Fórmula para quitar caracteres en una celda...
- Fórmula de Excel: "SI" una celda contiene una palabra, entonces ?
- Excel: Si contiene *parte texto1* O *parte texto2* entonces...
8 respuestas
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
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