我在 COL 1 中有许多行包含简单表达式(带有括号的加法、减法、乘法和除法),我需要在另一个单元格中显示结果。
我的表格的最终结果示例如下:
列 1 ___________ 列 2
5.1*3+2,5 _________ 17.8
3*(2.6/2-1) ________ 0.9
5+6*2-3/3 _________ 16
提前谢谢您,希望我说清楚了。
答案1
使用 VBA 宏可以实现这一点。我不太确定是否存在任何函数或表达式可以直接将文本评估为 Excel 中的表达式。
在 Excel 工作簿中按 ALT + F11 打开 VBA
插入宏并在其中输入以下代码
Function EvaluateExp(Ref As String)
Application.Volatile
EvaluateExp = Evaluate(Ref)
End Function
将工作簿保存为任何文件名 .xlsm,即启用宏的 Excel 工作表。这将创建一个自定义公式来评估文本表达式的结果。现在我们在 Excel 中使用此公式。请注意,这只适用于包含此宏的 Excel 工作簿。将公式复制到另一张工作表会导致错误,因为缺少宏。
现在您的表达式位于 A2 到 A6 中,因此在单元格 B2 中键入以下公式并将其向下拖动。
=EvaluateExp(CONCATENATE("=",(A2)))
答案2
有一个简单的方法可以做到这一点,即使用内置的 EVALUATE() 函数。这有点奇怪,因为它只能用作命名范围的一部分。
为此,请选择第一个结果单元格(此处为 B2)并为该单元格定义一个名称。在我的 Excel 版本中,您可以通过选择“插入”>“名称”>“定义...”来进入此对话框(但根据 pat2015 的图片判断,而不是他的版本。)
关键是在“引用:”框中使用 EVALUATE() 函数。
定义好范围后,就可以像函数一样在B2中输入名称了:
并向下填充计算出文本表达式中的所有答案。
这基本上与 pat2015 的答案相同,但您不必创建宏。这确实使用了宏,因此您需要将工作簿保存为 .xlsm。保存时您会收到有关此情况的通知。