Convierte una cadena en una fórmula con Evaluar

Índice
  1. Usando EVALUAR para convertir una cadena en una fórmula
  2. EVALUAR como función definida por el usuario para convertir cadena en fórmula
  3. Conclusión

Recientemente me encontré con una situación en la que necesitaba convertir una cadena de texto en una fórmula para el cálculo. Esperaba encontrar que Excel tuviera la capacidad de hacer esto. Y lo hace. . . en parte.

Si tiene un número almacenado como texto, puede multiplicarlo por 1 y se convertirá en un número. Pero, ¿qué pasa si queremos convertir una cadena de texto completa en una fórmula, en lugar de simplemente convertir un solo número? ¿Cómo podemos lograr esto? Excel tiene la fórmula EVALUAR, sin embargo, esta es una fórmula heredada que no funciona como se esperaba. Entonces, veamos cómo podemos resolver esto.

Usando EVALUAR para convertir una cadena en una fórmula

Usemos un ejemplo sencillo de cómo la función EVALUAR podría convertir una cadena en una fórmula.

En nuestra hoja de trabajo tenemos datos en 3 celdas.

A1 = 1
A2 = +
A3 = 1

ejemplo sencillo 1 + 1

Si quisiéramos usar esta información para crear la fórmula 1+1 (que es igual a 2), ¿cómo podríamos hacerlo? La fórmula EVALUAR sería la opción perfecta, excepto que sólo existe parcialmente. Si tuviéramos que incluir una fórmula como:

=EVALUAR(A1A2A3)

evaluar la función de Excel producirá un error

Nota: Se utiliza para combinar celdas en una sola cadena, por lo que nuestro ejemplo sería:

=EVALUAR(“1+1”)

Parece que podría funcionar, pero si lo intentamos recibiremos un error como este:

función de mensaje de error no válida

Sin embargo, podemos crear esa misma fórmula como un rango con nombre.

Fórmulas – Definir nombres – Administrador de nombres

ubicación del administrador de nombres en la cinta

Haga clic en Nuevo

ventana del administrador de nombres nuevo nombre

Ingrese la fórmula en el cuadro Se refiere a y haga clic en Aceptar.

evaluar el ejemplo como un rango con nombre

Ese rango con nombre ahora está disponible para su uso en fórmulas.

evaluar ejemplo de rango llamado

El resultado en la celda C1 será: 2

resultado del ejemplo de evaluación llamado rango

Esto puede resultar útil hasta cierto punto, pero en la mayoría de circunstancias no proporciona una solución adecuada para convertir una cadena de texto en una fórmula. Necesitamos algo que dé el mismo resultado, pero que pueda usarse como una fórmula normal de Excel.

EVALUAR como función definida por el usuario para convertir cadena en fórmula

Es posible crear nuestras propias funciones de Excel con VBA; éstas se conocen como funciones definidas por el usuario (UDF). Funcionan de la misma manera que las funciones estándar de Excel, pero nosotros determinamos cómo se debe calcular el resultado.

Si insertamos el siguiente código VBA en un Módulo del Editor de Visual Basic podremos crear nuestra propia fórmula EVALUAR.

Función EvaluateString(strTextString As String)Application.VolatileEvaluateString = Application.Caller.Parent.Evaluate(strTextString)Función final

Eso es todo. Sólo 4 líneas. Aunque Excel no tiene la función EVALUAR en sí, VBA todavía la tiene.

Ahora podemos utilizar esto como si fuera una función normal.

evaluar función de cadena - creada como udf

El resultado en la celda C1 será: 2

resultado del ejemplo de evaluación llamado rango

No es necesario crear un rango con nombre cada vez y esta fórmula ahora está disponible para usar en nuestro libro de trabajo.

Nota: Si el código no se coloca en un Módulo, no funcionará.

Conclusión

Para convertir una cadena de texto en una fórmula, parece que la ruta de función definida por el usuario de VBA es la mejor opción. Si bien es posible utilizar un rango con nombre, está restringido por lo que puede lograr.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...