evaluar formula en texto

26/07/2006 - 18:09 por Francisco M | Informe spam
Amigos del foro, me pueden ayudar con esto:
En excel, ¿existe alguna fórmula para evaluar una fórmula en texto?, por
ejemplo...
=evaluar("=suma(2,3)")

lo unico que se me ocurre (y funciona) es enviarla por vba a una celda cómo
formula y rescatar el valor, pero no hay algo más directo?
ya que para esto debo tener una celda temporal, y es poco limpio.

Saludos, y gracias.
Francisco.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/07/2006 - 01:41 | Informe spam
hola, Francisco !

... existe alguna formula para evaluar una formula en texto?, por ejemplo... =evaluar("=suma(2,3)")
lo unico que se me ocurre (y funciona) es enviarla por vba a una celda como formula y rescatar el valor
pero no hay algo mas directo?
ya que para esto debo tener una celda temporal, y es poco limpio.



op1: definir una funcion personalizada [vba] que tome textos y los 'convierta' a formula [o al menos... que lo intente]
Function Mi_formula(Texto As String)
Mi_formula = Evaluate("=" & Texto)
End Function

-> si suponemos que en 'A1' escribes [sin el signo '='] el texto -> sum(2,3)
aplicar la formula [B1] =mi_formula(a1) -> devolveria el resultado de -> 5
o.. =mi_formula("sum(2,3)")
-> CONS: las 'funciones' que intervengan deberan ser especificadas en ingles, y el separador de argumentos debera ser la coma ';'

op2: puedes usar la macro-funcion de excel version 4.0 -> evaluar("texto") +/- como sigue:
-> si suponemos que en 'A1' escribes la formula [en el idioma instalado y el separador de argumentos 'configurado'] -> suma(2,3)
y que el resultado lo necesitas una celda a la derecha de donde escribes el texto-formula [B1] ?
1) selecciona la celda 'B1'
2) inserta/define un nombre [menu] insertar / nombre / definir...
nombre: [p.e.] Mi_formula
se refiere a: -> =evaluar(!a1)
3) [todavia en 'B1'] usar el nombre definido para 'evaluar' el texto de la celda a la izquierda: -> =MI_formula
-> CONS: la macro-funcion [evaluar] debera ser en el idioma instalado de la version de excel donde se usara
ademas del separador de argumentos configurado en el sistema

nota: como veras... cualquiera de las dos pudiera funcionar/fallar... segun idioma/configuracion donde se ejecute :-((

op3: por que 'filtrar' por una cadena de texto alguna funcion... en lugar de usar la funcion 'en directo' ? -> =suma(2,3) -???-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Francisco M
28/07/2006 - 23:02 | Informe spam
Gracias Hector Miguel, me quedo con la opción 1 que es más general.
y respecto a tu pregunta, por qué utilizo las cadenas, es porque trabajo
constantemente relacionando planillas, pero al variar las versiones de
avance, o de distintos escenarios me van quedando una telaraña de vínculos
(links) por doquier... por lo que para ello estaba haciendo una macro
personal, para revisar entre otras cosas, que celdas tienen links externos,
los nombres definidos, las celdas predecesoras, etc, etc, etc... entre las
cosas que no me funcionaban eran los nombre definidos, porque estas me
aparecen como por ejemplo : "=HojaX!A1" y no sabía cómo rescatar el
valor, y bueno, ahí vino la curiosidad: ¿y cómo puedo evaluar una
formula si está en texto?. eso...

por si sirve a alguien, seguramente no es lo más óptimo, pero a mi me da
resultado:

Sub nombres_definidos()
Dim nombre As Name
Dim x As String
fila = 1
On Error Resume Next
For Each nombre In ActiveWorkbook.Names
x = x & IIf(IsEmpty(x), "", vbLf) & fila & ":[" & nombre.Name & "] " &
nombre.RefersTo & ": " & Evaluate(nombre.Value)
fila = fila + 1
Next
Debug.Print x
On Error GoTo 0
End Sub

Saludos,
Francisco.

"Héctor Miguel" escribió en el mensaje
news:
hola, Francisco !

... existe alguna formula para evaluar una formula en texto?, por
ejemplo... =evaluar("=suma(2,3)")
lo unico que se me ocurre (y funciona) es enviarla por vba a una celda
como formula y rescatar el valor
pero no hay algo mas directo?
ya que para esto debo tener una celda temporal, y es poco limpio.



op1: definir una funcion personalizada [vba] que tome textos y los
'convierta' a formula [o al menos... que lo intente]
Function Mi_formula(Texto As String)
Mi_formula = Evaluate("=" & Texto)
End Function

-> si suponemos que en 'A1' escribes [sin el signo '='] el texto ->
sum(2,3)
aplicar la formula [B1] =mi_formula(a1) -> devolveria el resultado
de -> 5
o.. =mi_formula("sum(2,3)")
-> CONS: las 'funciones' que intervengan deberan ser especificadas en
ingles, y el separador de argumentos debera ser la coma ';'

op2: puedes usar la macro-funcion de excel version 4.0 -> evaluar("texto")
+/- como sigue:
-> si suponemos que en 'A1' escribes la formula [en el idioma instalado y
el separador de argumentos 'configurado'] -> suma(2,3)
y que el resultado lo necesitas una celda a la derecha de donde
escribes el texto-formula [B1] ?
1) selecciona la celda 'B1'
2) inserta/define un nombre [menu] insertar / nombre / definir...
nombre: [p.e.] Mi_formula
se refiere a: -> =evaluar(!a1)
3) [todavia en 'B1'] usar el nombre definido para 'evaluar' el texto de
la celda a la izquierda: -> =MI_formula
-> CONS: la macro-funcion [evaluar] debera ser en el idioma instalado de
la version de excel donde se usara
ademas del separador de argumentos configurado en el sistema

nota: como veras... cualquiera de las dos pudiera funcionar/fallar...
segun idioma/configuracion donde se ejecute :-((

op3: por que 'filtrar' por una cadena de texto alguna funcion... en lugar
de usar la funcion 'en directo' ? -> =suma(2,3) -???-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida