我有一张 Excel 表,其基本布局如下:
| Setting | Value |
| x + 10 | .... |
| x + 20 | .... |
| x + 35 | .... |
其中每行的单元格Value
都是根据x + 10
等计算的。列中的单元格Settings
被格式化为字符串,因为它们旨在提供设置值的可视化表示。x + 10
鉴于 的值在工作表某处的单元格中可用,是否有一种简单的方法可以将字符串转换为数值x
?
我看过几个类似的问题,例如 Excel 将字符串方程式转换为数学函数但是问题本身都比我正在做的事情更复杂,而且我正在寻找一个不涉及 VBA 的简单解决方案。
答案1
有一个内置的旧 VBA 函数,称为评估,它将获取一个可以接受的 Excel 数学公式的精确字符串,并将其转换为数字和运算符并求解。 在您的例子中,您需要查看两个步骤。 一个是执行 X 的替换,第二个是求解结果方程。
此解决方案将生成一个辅助列,仅用于说明步骤。只要各个步骤中的公式正确嵌套在后续公式中,最后一个单元格就不需要辅助列。
第 1 部分 - 替代
查看替换公式。此公式将在另一个单元格中查找给定的字符串并将其替换为另一个值。
SUBSTITUTE(string of text, text you are looking for, text you want to change to, optional occurrence to change)
在临时辅助列中使用以下公式并复制下来。假设 X 的值位于单元格 Q4 中。而您要处理的第一个公式位于 B2 中。
=SUBSTITUTE(B2,"X",$Q$4)
因此,如果 X 为 10,则您最终会得到如下列:
| Setting |helper | Value |
| x + 10 |10 + 10| .... |
| x + 20 |10 + 20| .... |
| x + 35 |10 + 35| .... |
第 2 部分 - 评估
这里有几个关键步骤。选择 10+10 右侧的单元格。原因是当我们创建此公式时,我们希望它处理相对于我们创建公式的单元格位置的单元格。接下来要做的是创建一个命名公式。为此,转到功能区上的“公式”选项卡。在“公式”功能区上的“定义名称”部分中,选择“定义名称”。在名称框中,为其指定一个您选择的名称。我倾向于使用 ANSWER。无论您选择什么,您都将像其他任何函数一样在单元格中引用它。在引用框中输入以下等式:
=Evaluate(C3)
请务必在单元格引用中去掉 $。本例中的 C3 指的是包含 10+10 的单元格。完成后单击“确定”。在开始时选择的单元格中输入
=ANSWER
其中 ANSWER 是公式的名称。然后它应该抓取左侧的单元格并对其进行评估,然后给出答案 20。当您向下复制单元格时,它将引用下一个公式,依此类推,直到您复制为止。
现在,为了在没有辅助列的情况下执行此操作,您需要使用替代公式来定义公式,以便您的命名公式看起来像这样:
=EVALUATE(SUBSTITUTE(B2,"X",$Q$4))
现在的诀窍是您需要为每个要使用的工作表创建它,并且您不能重复公式的名称。我还没有找到解决这个问题的方法。
答案2
实际上,您可以使用文本编辑器执行此操作 - 只要确定文本作为公式中的变量映射到某些工作表单元格即可。
首先将文本作为公式复制到文本编辑器,例如 Notepad++(对于简单情况,甚至 Word 或 Windows Notepad 也可以使用)。
然后用单元格引用替换变量,例如替换 x → A1。
现在切换到 Excel 中的公式视图,如果您使用 Excel 2010,可以通过单击公式--(公式审核按钮组)--显示公式来完成。
第四,将新公式从文本编辑器复制回 Excel。
最后,再次单击“显示公式”退出公式视图。瞧!