我在单元格中有0,4*A1
(作为字符串)。如何将这个“字符串公式”转换成一个真实的公式并在另一个单元格中计算它的值?如何将字符串公式转换为“真实”公式
回答
评估和演示可能适合:
- http://www.mrexcel.com/forum/showthread.php?t=62067
Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function
只是为了好玩,我发现了一个interesting article here,使用某种方式隐藏评估功能,它在Excel中存在。诀窍是将它分配给一个名称,并在您的单元格中使用该名称,因为如果直接在单元格中使用EVALUATE()会给您一个错误消息。我尝试过,它的工作原理!如果要在表格中跨行复制,则可以使用相对名称。
有趣但似乎并不适用于更新版本的Excel。如果我正确地阅读它,那么访问被抑制的20世纪90年代Excel行为到2000年初的Excel,但在2010年,2013年,办公室365等过时是一种伎俩? – 2015-10-30 15:55:24
在Excel 2010中为我工作... – jimbobmcgee 2016-04-04 12:00:42
如果工作正常,没有任何事情是“过时的”! 4.0宏语言提供了一些巧妙的技巧。 – 2016-08-05 04:50:22
UPDATE这用来工作(在2007年,我相信),但不会在Excel 2013年
EXCEL 2013: 这是不太一样的,但如果有可能把0.4一个单元格(B1,比如说)以及单元格D1中另一个单元格(例如C1)中的文本值A1,可以使用= B1 * INDIRECT(C1),这会导致计算0.4 * A1的值。 所以,如果A1 = 10,你会在D1单元中得到0.4 * 10 = 4。如果我能找到一个更好的2013年解决方案,我会再次更新,并对不起微软破坏了原始功能的间接!
EXCEL 2007版本: 对于非VBA解决方案,请使用INDIRECT公式。它将一个字符串作为参数并将其转换为单元格引用。
例如,= 0.4 * INDIRECT(“A1”)将返回值0.4 *该值在该工作表的A1单元格中。
如果单元格A1是,比如说,10,则= 0.4 * INDIRECT( “A1”)将返回4.
我prefere的专业解决方案的VBA的解决方案。
随着份替换-过程中的问题 search and replace WHOLE WORDS ONLY,我使用下面的VBA的过程:
在Excel工作表''
' 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
使用的程序的样子:
最好的,非VBA的方法是使用TEXT公式。它将一个字符串作为参数并将其转换为一个值。
例如,= TEXT(“0.4 * A1”,'##')将返回值0.4 *该值在该工作表的A1单元格中。
这不起作用,并且公式错误(“需要”而不是“##”) – wardw123 2016-12-15 19:40:35
在我看来,最好的解决方案是在这个环节: http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function
下面是一个总结: 1)在单元格A1中输入1, 2)在A2单元格中输入2, 3)在单元格A3输入+, 4)创建一个命名范围,在创建指定范围时在“指向”字段中添加“=评估(A1 & A3 & A2)”。让我们称这个命名范围为“testEval”, 5)在单元格A4中输入= testEval,
单元格A4的值应该是3。
备注: a)不需要编程/ vba。 b)我在Excel 2013中做到了这一点,它的工作原理。
给出的示例不起作用,但链接示例确实起作用。 – JayJay123 2017-02-05 23:15:44
- 1. 将字符串转换为公式
- 2. 将字符串转换公式,数学公式在C#
- 3. 如何将字符串公式转换为javascript中的数字?
- 4. 如何将字符串转换为数学公式
- 5. 将公式转换为PHP
- 6. 将公式转换为VBA
- 7. 如何将MathJax公式转换为img
- 8. 将字符串转换为Julia中的公式对象
- 9. 将文字文本转换为公式
- 10. 如何使用Javascript将字符串公式转换为数字值
- 11. 在Excel中将公式中的公式转换为公式中的值VBA
- 12. 将公式转换为每周目标的Excel公式
- 13. Excel公式 - 文字转换
- 14. 转换Excel公式为Javascript
- 15. 如何公式转换为TLA +代码
- 16. Excel公式从字符串
- 17. 将Excel公式转换为C?
- 18. 将Excel公式转换为Access查询
- 19. vba:将范围转换为公式
- 20. Excel - 将if条件转换为公式
- 21. 将int转换为char C公式
- 22. 将Excel公式转换为T-SQL
- 23. 将组合公式转换为VBA
- 24. 如何将公式转换为析取范式?
- 25. 如何将NSArray(以字符串格式)转换为真正的数组格式?
- 26. 如何将excel文件的数组公式/公式转换为Excel中的等效常规公式?
- 27. 将字符串转换为模式为
- 28. 将字符串转换为格式为
- 29. Excel 2007公式为真正
- 30. 将PGP公钥转换为RSA公钥XML格式
**如果使用这种方法,请小心**:默认情况下,Evaluate()会在活动工作表的上下文中操作*,所以像Eval(“0.4 * A1”)这样的输出将会改变取决于哪个工作表处于活动状态。您可以使用(例如)'Application.ThisCell.Parent.Evaluate(Ref)'将上下文限制为包含调用'Eval'的工作表。 – 2015-09-08 19:45:24
它在Excel 2013中还能工作吗? – 2016-09-02 12:33:10