Fio*_*ala 52
Evaluate 可能适合:
http://www.mrexcel.com/forum/showthread.php?t=62067
Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function
Run Code Online (Sandbox Code Playgroud)
小智 37
我串接我的公式是正常的,但在一开始我'=不是=.
然后我将文本复制并粘贴到我需要它的位置.然后我突出显示保存为文本的部分,然后按ctrl+ H查找并替换.
我替换'=了=,我的所有功能都是活跃的.
它有几个阶段,但它避免了VBA.
我希望这有帮助,
抢
war*_*123 11
更新这曾经工作(在2007年,我相信),但不在Excel 2013中.
这不完全相同,但是如果可以将0.4放在一个单元格(B1,比方说)中,而文本值A1放在另一个单元格(C1,比如说)中,则在单元格D1中,可以使用= B1*INDIRECT( C1),这导致计算0.4*A1的值.
所以,如果A1 = 10,你将进入0.4*10 = 4单元格D1.如果我能找到更好的2013解决方案,我会再次更新,对不起,微软破坏了INDIRECT的原始功能!
对于非VBA解决方案,请使用该INDIRECT公式.它将字符串作为参数并将其转换为单元格引用.
例如,=0.4*INDIRECT("A1")将返回该工作表的单元格A1中的值0.4*.
如果单元格A1是10,那么=0.4*INDIRECT("A1")将返回4.
对于专业解决方案,我更喜欢 VBA 解决方案。
对于问题 search 中的替换过程部分 并仅替换整个单词,我使用以下 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
Run Code Online (Sandbox Code Playgroud)
该过程在 Excel 工作表中的用法如下所示: