我无法找到一种方法来设置两列,一列显示可编辑的整个公式,另一列显示实际执行公式。
理想情况下,我希望我的工作表设置如下:
Formula | Value
=5+2 | 7
=3-2 | 1
我希望能够更改“公式”列并让它自动更新“值”列。
我尝试过使用GetFormula()
函数,但我不认为这就是我想做的事情,因为我最终会根据我想要做的事情进行循环引用。我最接近的是在公式列或空格中使用Right()
函数和文本并删除空格。但是,我最终得到了文本而不是解决的公式。
使用=RIGHT(A2, LEN(A2)-1)
Formula | Value
=5+2 | =5+2
我也尝试使用=RIGHT(A2,LEN(A2)-1)
但没有“=”,并且无法弄清楚如何将“5 + 2”转换为我可以用来解决的文本。我希望用公式和没有宏/ VBA来做到这一点。
答案 0 :(得分:3)
以下是如何做到的。
打开名称管理器。从工作表中控制-F3,然后单击“新建”按钮。
对于对话框中的名称字段,请输入EVALA
。我刚刚选了这个名字;它代表"评估A"。但你可以选择你喜欢的任何名字。
对于Refers to
字段,请输入此
=EVALUATE($A1)
单击“确定”,然后单击“关闭”。
在B1中输入以下公式:
=EVALA
那就是它。
现在,您可以在工作表的任何行上使用此公式,它将评估您输入公式的行的单元格中的任何内容。
答案 1 :(得分:1)
您可以使用VBA轻松地创建用户定义的函数,但如果您不经常使用VBA,则另一种方法是创建Name对象。名称对象可以访问单元格公式中通常不可用的某些函数。其中一个函数是“Evaluate”,它将字符串计算为数学表达式。这是一个如何做到这一点的演示。
注意:请特别注意$
的使用。您可能不希望在名称定义中使用任何$
,因为这样可以防止它以相对方式运行。另外,Sheet1!
表示这不适用于其他工作表。
更新我只想将此方法归功于以下来源。这是非常整洁的东西,所以对于任何感兴趣的人都可以阅读。最后一个链接特别提供了一个创建没有数据点的图表的简洁示例。
MSDN Evaluating Defined Names
The power of evaluate (ozgrid)
XL4 Macro Functions in Names - JKP
Evaluate and Indirect
More unique functionality of Defined Names
这可能是OP的最佳解决方案,因为它要求避免使用VBA;但是,这种方法有些局限。它需要在每张要使用的纸张上进行手动设置。我认为更优选的是创建一个非常简单的UDF ...
Function Eval(Expr As String)
Eval = Application.Evaluate(Expr)
End Function
这可以添加到任何可访问的加载项,使其可用于任何Excel实例。设置更多,但维护更少。
答案 2 :(得分:0)
只需在A列中的公式前添加一个'
:
'=5+2
会在您的单元格中显示为" = 5 + 2"。然后在B列中,正常执行公式=5+2
。