Come trasformare una formula di stringa in una formula “reale”

Ho 0,4*A1 in una cella (come una stringa). Come può convertire questa “formula di stringa” in una formula reale e calcolarne il valore, in un’altra cella?

Evaluate potrebbe adattarsi:

http://www.mrexcel.com/forum/showthread.php?t=62067

 Function Eval(Ref As String) Application.Volatile Eval = Evaluate(Ref) End Function 

Ho concatenato la mia formula come normale ma all’inizio ho avuto '= invece di = .

Quindi copio e incollo come testo dove mi serve. Quindi evidenzio la sezione salvata come testo e premo ctrl + H per trovare e sostituire.
Sostituisco '= with = e tutte le mie funzioni sono attive.

Sono poche fasi ma evita VBA.

Spero che aiuti,

rapinare

Solo per divertimento, ho trovato un articolo interessante qui , per usare una funzione di valutazione nascosta che esiste in Excel. Il trucco è assegnarlo a un nome e usare il nome nelle celle, perché EVALUATE () ti darebbe un messaggio di errore se usato direttamente in una cella. Ho provato e funziona! Puoi usarlo con un nome relativo, se vuoi copiare attraverso le righe se un foglio.

AGGIORNAMENTO Funzionava (nel 2007, credo), ma non in Excel 2013.

EXCEL 2013:

Questo non è esattamente lo stesso, ma se è ansible inserire 0.4 in una cella (B1, per esempio) e il valore di testo A1 in un’altra cella (C1, per esempio), nella cella D1, è ansible utilizzare = B1 * INDIRETTO ( C1), che risulta nel calcolo del valore di 0,4 * A1.

Quindi, se A1 = 10, otterresti 0.4*10 = 4 nella cella D1. Aggiornerò di nuovo se riesco a trovare una soluzione migliore per il 2013 e mi dispiace che Microsoft abbia distrutto la funzionalità originale di INDIRECT!

Versione EXCEL 2007:

Per una soluzione non VBA, utilizzare la formula INDIRECT . Prende una stringa come argomento e la converte in un riferimento di cella.

Ad esempio, =0.4*INDIRECT("A1") restituirà il valore di 0.4 * il valore che si trova nella cella A1 di tale foglio di lavoro.

Se la cella A1 fosse, per esempio, 10, allora =0.4*INDIRECT("A1") restituirebbe 4.

Preferisco la soluzione VBA per soluzioni professionali.

Con la parte di sostituzione della procedura nella ricerca della parola e sostituire SOLO PAROLE INTERESSE , uso la seguente procedura 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 

L'uso della procedura in un foglio excel assomiglia a:

utilizzo in foglio excel

Secondo me le migliori soluzioni sono in questo link: http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function

Ecco un riassunto: 1) Nella cella A1 inserisci 1, 2) Nella cella A2 inserisci 2, 3) Nella cella A3 inserisci +, 4) Crea un intervallo denominato, con “= Valuta (A1 e A3 e A2)” nella si riferisce al campo durante la creazione dell’intervallo denominato. Chiamiamo questo intervallo denominato “testEval”, 5) Nella cella A4, inserisci = testEval,

La cella A4 dovrebbe avere il valore 3 in essa.

Note: a) Non richiede programmazione / vba. b) L’ho fatto in Excel 2013 e funziona.

Il modo migliore, non VBA, per farlo è usare la formula TEXT. Prende una stringa come argomento e la converte in un valore.

Ad esempio, = TEXT (“0.4 * A1”, ‘##’) restituirà il valore di 0.4 * il valore che si trova nella cella A1 di quel foglio di lavoro.