string - español - funcion eval excel
Cómo convertir una fórmula de cadena en una fórmula "real" (7)
Concatené mi fórmula de forma normal pero al principio tenía ''=
vez de =
.
Luego copio y pego como texto donde lo necesito. Luego resalto la sección guardada como texto y presiono ctrl + H para buscar y reemplazar.
Sustituyo ''=
with =
y todas mis funciones están activas.
Son algunas etapas pero evita VBA.
Espero que esto ayude,
Robar
Tengo 0,4*A1
en una celda (como una cadena). ¿Cómo se puede convertir esta "fórmula de cadena" en una fórmula real y calcular su valor en otra celda?
En mi opinión, las mejores soluciones están en este enlace: http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function
Aquí hay un resumen: 1) En la celda A1, ingrese 1, 2) En la celda A2, ingrese 2, 3) En la celda A3, ingrese +, 4) Cree un rango con nombre, con "= Evaluar (A1 & A3 & A2)" en se refiere al campo al crear el rango nombrado. Llamemos a este rango llamado "testEval", 5) En la celda A4, ingrese = testEval,
La celda A4 debe tener el valor 3 en ella.
Notas: a) No requiere programación / vba. b) Hice esto en Excel 2013 y funciona.
La mejor forma de hacerlo, no VBA, es usar la fórmula TEXT. Toma una cadena como argumento y la convierte en un valor.
Por ejemplo, = TEXT ("0.4 * A1", "##") devolverá el valor de 0.4 * al valor que está en la celda A1 de esa hoja de trabajo.
Prefiero la solución VBA para soluciones profesionales.
Con la parte del procedimiento de reemplazo en la búsqueda de preguntas y el reemplazo de PALABRAS ENTERAS SOLAMENTE , utilizo el siguiente procedimiento de VBA:
''''
'' Evaluate Formula-Text in Excel
''
Function wm_Eval(myFormula As String, ParamArray variablesAndValues() As Variant) As Variant
Dim i As Long
''
'' replace strings by values
''
For i = LBound(variablesAndValues) To UBound(variablesAndValues) Step 2
myFormula = RegExpReplaceWord(myFormula, variablesAndValues(i), variablesAndValues(i + 1))
Next
''
'' internationalisation
''
myFormula = Replace(myFormula, Application.ThousandsSeparator, "")
myFormula = Replace(myFormula, Application.DecimalSeparator, ".")
myFormula = Replace(myFormula, Application.International(xlListSeparator), ",")
''
'' return value
''
wm_Eval = Application.Evaluate(myFormula)
End Function
''''
'' Replace Whole Word
''
'' Purpose : replace [strFind] with [strReplace] in [strSource]
'' Comment : [strFind] can be plain text or a regexp pattern;
'' all occurences of [strFind] are replaced
Public Function RegExpReplaceWord(ByVal strSource As String, _
ByVal strFind As String, _
ByVal strReplace As String) As String
'' early binding requires reference to Microsoft VBScript
'' Regular Expressions:
'' with late binding, no reference needed:
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Global = True
''re.IgnoreCase = True '' <-- case insensitve
re.Pattern = "/b" & strFind & "/b"
RegExpReplaceWord = re.Replace(strSource, strReplace)
Set re = Nothing
End Function
El uso del procedimiento en una hoja de Excel se ve así:
Solo por diversión, encontré un artículo interesante aquí , para usar una función de evaluación oculta de alguna manera que sí existe en Excel. El truco es asignarlo a un nombre, y usar el nombre en sus celdas, porque EVALUAR () le daría un mensaje de error si se usa directamente en una celda. ¡Lo intenté y funciona! Puede usarlo con un nombre relativo, si quiere copiar entre filas si es una hoja.
Evaluate
podría ser adecuado:
http://www.mrexcel.com/forum/showthread.php?t=62067
Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function
ACTUALIZACIÓN Esto solía funcionar (en 2007, creo), pero no en Excel 2013.
EXCEL 2013:
Esto no es lo mismo, pero si es posible poner 0,4 en una celda (B1, por ejemplo), y el valor de texto A1 en otra celda (C1, por ejemplo), en la celda D1, puede usar = B1 * INDIRECTO ( C1), que da como resultado el cálculo del valor 0.4 * A1.
Entonces, si A1 = 10, obtendrías 0.4*10 = 4
en la celda D1. Volveré a actualizar si puedo encontrar una mejor solución para 2013, ¡y siento que Microsoft haya destruido la funcionalidad original de INDIRECT!
EXCEL 2007 versión:
Para una solución que no sea de VBA, use la fórmula INDIRECT
. Toma una cadena como argumento y la convierte en una referencia de celda.
Por ejemplo, =0.4*INDIRECT("A1")
devolverá el valor de 0.4 * el valor que está en la celda A1 de esa hoja de trabajo.
Si la celda A1 era, digamos, 10, entonces =0.4*INDIRECT("A1")
devolvería 4.