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)
-
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.
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.