Saltar al contenido

Función de Excel que evalúa un string como si fuera una fórmula?

Verificamos de forma cada enunciados de nuestra página web con el objetivo de mostrarte siempre información certera y certera.

Solución:

EVALUATE está disponible en VBA en todas las versiones actuales

Puede incluirlo en su código VBA o envolverlo en un UDF simple para que esté disponible como una función de hoja de trabajo

Function ev(r As Range) As Variant
    ev = Evaluate(r.Value)
End Function

Básicamente, trata el valor del parámetro pasado como una fórmula de Excel, como si se hubiera ingresado en una celda.

"11+5" y "=11+5" producirá el mismo resultado

=evaluate(put_reference[s]_here)

Esta es una semifunción – puede solamente utilizarse en el Administrador de nombres.

Así es como puedes usarlo:

  • Apunte a una celda y abra el Administrador de nombres (Desde la pestaña FÓRMULAS o haciendo clic en CTRL+F3)

    Evaluar ejemplo

  • Escribe =evaluate( y haga clic en la celda que desee (es mejor mantener la referencia relativa).

  • Termina la fórmula con )

  • Dale un NOMBRE – (en este ejemplo lo llamaré simplemente eva).

  • Hacer clic OK.

Ahora, supongamos que ha seleccionado B1 y ha hecho que todo esto se refiera a A1. En A1 puedes poner “1+1” y en B1 escribes =eva – una vez que haya presionado ENTER, el valor B1 será 2. Como la referencia en Name Manager era relativa, puede usar =eva para obtener la evaluación de cualquier celda que quede una celda desde donde la desea. (por ejemplo, en B2, =eva devolverá el resultado de la celda A2)

Hay una advertencia importante con la gran respuesta de @karel y @Laurentiu Mirica: la función de evaluación no volverá a calcular a menos que cambie la celda a la que se hace referencia. Por ejemplo, la celda C1 contiene el texto "A1+B1" y D1 contiene la función =eval. Si los valores en A1 o B1 cambian, la celda D1 no se vuelve a calcular.

Demostración del problema de evaluación

Esto se puede corregir introduciendo una función volátil en el string o la celda de evaluación. Esto forzará un nuevo cálculo cada vez que se vuelva a calcular la hoja de cálculo. Por ejemplo, la celda C1 podría reemplazarse con =if(today(),"A1+B1",). O, D1 podría ser reemplazado por =if(today(),eval,). Cualquier función volátil debería funcionar.

Una tercera y quizás la solución más simple es cambiar la semifunción en el administrador de nombres a =if(today(),evaluate(c1),)

Comentarios y calificaciones

Más adelante puedes encontrar las explicaciones de otros gestores de proyectos, tú igualmente tienes el poder mostrar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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