我0,4*A1
在一个单元格中(作为字符串)。如何在另一个单元格中将此“字符串公式”转换为真实公式并计算其值?
我0,4*A1
在一个单元格中(作为字符串)。如何在另一个单元格中将此“字符串公式”转换为真实公式并计算其值?
Answers:
Evaluate
可能适合:
http://www.mrexcel.com/forum/showthread.php?t=62067
Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function
Evaluate()
默认情况下,它将在活动工作表的上下文中运行,因此类似的输出Eval("0.4*A1")
将根据活动的工作表而变化。您可以使用(例如)Application.ThisCell.Parent.Evaluate(Ref)
将上下文限制在包含对Eval
#VALUE!
我认为字符串必须严格小于256个字符(Excel 2010)
我将公式连接为正常状态,但一开始我没有'=
使用=
。
然后,我将文本复制并粘贴到需要的地方。然后,我突出显示另存为文本的部分,然后按ctrl+H查找并替换。
我替换为'=
,=
并且所有功能都处于活动状态。
它的几个阶段,但它避免了VBA。
我希望这有帮助,
抢
=
为自己
Find/Replace
功能在多个单元格中进行重复的类似编辑,则也可以使用此方法。禁用=
with/=
@=
或任何您想暂时禁用公式并允许公式显示为文本的选项。然后查找/替换您真正想要更改的内容。最终的“查找/替换”将更/=
@=
改为“ just” =
,并将再次变为自计算公式。没有格式更改。
Name
链接中描述的技巧。
UPDATE以前可以工作(我相信是在2007年),但在Excel 2013中却没有。
这不是完全一样,但是如果可以在一个单元格(例如B1)中放置0.4,而在另一个单元格(例如C1)中放置文本值A1,则可以在单元格D1中使用= B1 * INDIRECT( C1),则计算出0.4 * A1的值。
因此,如果A1 = 10,您将进入0.4*10 = 4
单元格D1。如果可以找到更好的2013解决方案,我将再次更新,对不起,Microsoft破坏了INDIRECT的原始功能!
对于非VBA解决方案,请使用INDIRECT
公式。它以字符串作为参数,并将其转换为单元格引用。
例如,=0.4*INDIRECT("A1")
将返回值0.4 *该工作表的单元格A1中的值。
如果单元格A1为10,则=0.4*INDIRECT("A1")
返回4。
indirect
对这16个上投票很感兴趣-从我对功能的了解来看,这永远行不通。我可以看到您可能会做些什么,例如=INDIRECT("A"&(0.4*5))
使用数学来计算单元格的引用,但是我敢肯定,间接引用不会计算任何东西。
=0.4*INDIRECT(A1)
我更喜欢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工作表中该过程的用法如下:
我认为最好的解决方案是在此链接中: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中做到了这一点,并且可以正常工作。
说,让我们E
用返回字符串的公式填充列,例如:
= " = " & D7
其中D7
单元格由更复杂的公式组成,它构成最终的期望结果,例如:
= 3.02 * 1024 * 1024 * 1024
因此,在所有巨大的行数中。
当行有一点-它只是够所需的细胞复制的值(人民币)
到最近的塔,比如G
,按F2与下面输入每行的。
但是,如果存在大量行,则不可能...
因此,没有VBA。没有额外的公式。没有F&R
没有错误,没有错别字,只是愚蠢的机械动作,
就像在福特传送带上一样。并且仅在几秒钟内:
D
G1