excel-如何将字符串公式转换为“真实”公式

我的单元格中有0,4*A1(作为字符串)。 如何在另一个单元格中将“字符串公式”转换为真实公式并计算其值?

Cloaky asked 2019-10-07T04:53:50Z
7个解决方案
46 votes

Evaluate可能适合:

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

Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
End Function
Fionnuala answered 2019-10-07T04:54:07Z
32 votes

我将公式连接为正常,但一开始我有'=,而不是=

然后,我将文本复制并粘贴到需要的地方。 然后,我突出显示另存为文本的部分,然后按ctrl + H进行查找和替换。
我将'=替换为=,并且所有功能均处于活动状态。

它的几个阶段,但避免使用VBA。

我希望这有帮助,

Robbie answered 2019-10-07T04:55:05Z
12 votes

只是为了好玩,我在这里找到了一篇有趣的文章,以使用Excel中确实存在的某种隐藏的评估函数。 诀窍是将其分配给一个名称,然后在单元格中使用该名称,因为如果直接在单元格中使用EVALUATE()会给您一个错误消息。 我尝试了并且有效! 如果要在一张纸上跨行复制,可以将其与相对名称一起使用。

Patrick Honorez answered 2019-10-07T04:55:32Z
10 votes

UPDATE以前可以工作(我相信是在2007年),但在Excel 2013中却没有。

EXCEL 2013:

这不是完全一样,但是如果可以在一个单元格(例如B1)中放置0.4,而在另一个单元格(例如C1)中放置文本值A1,则可以在单元格D1中使用= B1 * INDIRECT( C1),则计算出0.4 * A1的值。

因此,如果A1 = 10,则单元格D1中将获得255829806084155050848。 如果可以找到更好的2013解决方案,我将再次更新,对不起,Microsoft破坏了INDIRECT的原始功能!

EXCEL 2007版本:

对于非VBA解决方案,请使用=0.4*INDIRECT("A1")公式。 它以字符串作为参数,并将其转换为单元格引用。

例如,=0.4*INDIRECT("A1")将返回值0.4 *该工作表的单元格A1中的值。

如果单元格A1为10,则=0.4*INDIRECT("A1")将返回4。

wardw123 answered 2019-10-07T04:56:44Z
4 votes

对于专业的解决方案,我更喜欢VBA解决方案。

与问题中的替换程序部分仅搜索和替换整个单词,我使用以下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

Excel工作表中该过程的用法如下:

usage in excel-sheet

DrMarbuse answered 2019-10-07T04:57:24Z
2 votes

我认为最好的解决方案是在此链接中:[http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function]

总结如下:1)在单元格A1中输入1,2)在单元格A2中输入2,3)在A3单元格中输入+,4)创建一个命名范围,并在创建命名范围时在“引用”字段中使用“ = Evaluate(A1&A3&A2)”。 我们将此命名范围称为“ testEval”,5)在单元格A4中输入= testEval,

单元格A4中的值应为3。

笔记:a)不需要编程/ vba。 b)我在Excel 2013中做到了这一点,并且可以正常工作。

mountainclimber answered 2019-10-07T04:58:11Z
-2 votes

最好的非VBA方法是使用TEXT公式。 它以字符串作为参数并将其转换为值。

例如,= TEXT(“ 0.4 * A1”,'##')将返回值0.4 *该工作表的单元格A1中的值。

JakobW answered 2019-10-07T04:58:44Z
translate from https://stackoverflow.com:/questions/4471884/how-to-turn-a-string-formula-into-a-real-formula