Excel en función de celda VALOR para fórmulas

Excel en función de celda VALOR para fórmulas

Tengo una hoja de Excel que necesito ejecutar en Android. El único problema es que utilicé VBA para la función de evaluación y VBA no funciona en aplicaciones de Android. Estaba buscando una alternativa y encontré la función "VALOR()", vi que una celda con:

=VALUE(10 + 5 * 3)

Devolvería el resultado correcto (25). Ahora lo que me gustaría hacer es:

=VALUE(A2)

Donde A2 es un texto que contiene "10 + 5 * 3". Pero esto devuelve "¡#VALOR!"

¿Existe algún truco para usar VALUE() para evaluar fórmulas simples?

¡Gracias!

Respuesta1

Existe un truco que existe desde hace años que hace esto en la versión completa de Excel. Dudo que funcione en Android, pero puede que valga la pena intentarlo.

Estoy usando Excel 2013.

Vaya a la barra de cinta FÓRMULAS y elija Definir nombre.

Da cualquier nombre, por ejemplo.myResult

En la parte "Se refiere a:", ponga la fórmula=EVALUATE(A2)

Ahora, coloca la fórmula =myResulten tu hoja donde quieres que aparezca la respuesta.

Respuesta2

Utilice INDIRECTO().

Ejemplo (deFunción INDIRECTA de Microsoft Office):

Datos
B2 1.333
B3 45
Jorge 10
5 62
Fórmula Descripción Resultado
'=INDIRECTO(A2) Valor de la referencia en la celda A2. La referencia es a 1.333.
                   celda B2, que contiene el valor 1.333.                                   
'=INDIRECT(A3) Valor de la referencia en la celda A3. La referencia es a 45.
                   celda B3, que contiene el valor 45.
'=INDIRECT(A4) Debido a que la celda B4 tiene el nombre definido "George", la referencia a 10
                   ese nombre definido es a la celda B4, que contiene el valor 10
'=INDIRECT("B"&A5) Combina "B" con el valor en A5, que es 5. Esto, a su vez, 62
                   se refiere a la celda B5, que contiene el valor 62.

Se aplica a: Excel 2016, Excel 2010, Excel Starter, Excel 2013, Excel Online, Excel 2016 para Mac, Excel para Mac 2011, Excel 2007.

Respuesta3

HAY un "truco" para hacerlo.

Supongo que quiere decir que le gustaría evaluar una fórmula simple como la que se usa en su VALUE()fórmula: 10 + 5 * 3 en lugar de una versión literalmente rodeada de comillas. Pero incluso si no estuviera usando la convención habitual para mostrar el elemento de interés entre comillas y realmente presentara la cadena para evaluar en la celda con las comillas, bueno, eso también se puede hacer.

Y MUY simple.

Para hacer lo que creo que desea hacer: diga que la celda A1 tiene el contenido: 10 + 5 * 3. Considere dónde desea que vaya su salida en relación con la celda A1 y seleccione la celda deseada. Entonces, si desea la salida en la celda C1, seleccione C1. Mientras está seleccionado, cree un rango con nombre, quizás llamado TextCalculate, y asígnele la siguiente fórmula para su Refers tovalor:

=EVALUATE(A1)

Ciérrelo y en la celda C1 ingrese:

=TextCalculate

y evaluará lo que esté en A1 como desee (SI puede: ¡Tiene que ser algo que Excel pueda entender!) y mostrará el resultado en la celda C1.

Si realmente tuviera comillas alrededor de la entrada, es tan simple como configurar otro rango con nombre para ese tipo de datos de entrada y darle el valor de:

=EVALUATE(EVALUATE(A1))

El primero EVALUATE()elimina las comillas, luego el segundo evalúa la cadena restante limpia.

Note que dije poner la funciónEN UN RANGO NOMBRADOen lugar de decir ponerlo directamente en una celda. Esto es absolutamente necesario, sin complicaciones, y si lo intentas y no funciona, probablemente lo hayas probado en el lado de la celda de todos modos. Hágalo EN UN RANGO NOMBRADO y FUNCIONARÁ.

¿Porqué es eso? Bueno, eso es interesante, aunque creo que por tu pregunta ya sabes por qué... pero es posible que otros lectores no lo hagan (de ahí las siguientes advertencias, seguramente innecesarias, sobre probarlo solo en rangos con nombre). La función proviene del conjunto de comandos que Excel usaba para crear macros antes de que se implementara VBA. Está diseñado para su uso en macros creadas con herramientas antiguas y el único lugar en Excel en el que todavía funcionan es en la funcionalidad Rango con nombre. Tenga en cuenta que nunca, ninguno de ellos, trabajó fuera de las macros y tampoco lo hacen hoy: excepto dentro de un rango con nombre.

Siempre que la versión de Android pueda usar rangos con nombre, es posible que funcione allí. Honestamente, no puedo verificar eso y creo que puede que no, ya que mi mejor suposición es que la versión de Android es una reescritura, no un puerto, y es posible que hayan abandonado este aspecto de Excel, especialmente porque era para macros y descubres que Android no. No hago eso. Sin embargo, dado que no es parte de VBA en sí, solo es accesible para él, podría ser que lo hayan portado y apareció aunque no construyeron una interfaz para VBA (ni, por lo tanto, supongo, tampoco para nada más). Pruebe EVALUATE()en un rango con nombre en Excel de Android y vea. De hecho, puede que no lo hayan traído, pero claro, es posible que sí. Obviamente, no como una herramienta para VBA, pero quizás aún esté disponible para rangos con nombre.

Tengo que probar algo antes de detenerme... qué lástima... los nombres utilizados LET()se parecen mucho a los rangos con nombre "aplicados" a la fórmula individual (parecen así en general y reemplazarán un rango con nombre realmente definido, así que...), y me preguntaba si funcionaría en la fórmula de un nombre utilizado en LET(). Desgraciadamente, no fue así... Debe ser más (o menos) que eso.

información relacionada