将文字文本转换为公式

时间:2016-04-30 09:57:01

标签: excel text excel-formula excel-indirect

使用MS Excel 2010:我使用CONCATENATE公式创建一个看起来像公式的文本字符串,并需要一个将文本字符串转换为公式的公式;不使用MS Excel粘贴特殊功能或VBA /宏。

示例:在单元格B2中:G2包含文本,在单元格B4中我有CONCATENATE文本公式,返回文本字符串

=TRIM(CONCATENATE(B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2))

我希望Excel将此字符串解释为公式,并将单元格B6中的值返回/显示为:"永远做你自己...不要出去寻找成功的人格并复制它。“ - 李小龙

enter image description here

我尝试使用INDIRECT公式并且没有成功,不确定它是否是我的公式或是否可能。样本:单元格B6:

=INDIRECT(CONCATENATE("B4"))

3 个答案:

答案 0 :(得分:2)

1)CONCATENATE和&是一回事。换句话说,您作为字符串编写的公式可以翻译为:

=TRIM(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(B2)," "),C2)," "),D2)," "),E2)," "),F2)," "),G2)," "),H2))

如果你打算为你的功能写出CONCATENATE,那么就像@MarcoVos在你的问题的评论中指出的那样,将你想要的所有字符串分开,就像昏迷一样:

=CONCATENATE(B2," ",C2," ",D2," ",E2," ",F2," ",G2," ",H2)

或者如果你想使用更常见的形式&你的公式看起来就像你原来发布的那样没有CONCATENATE就像这样:

=B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2

最后两个公式将产生相同的结果。

2)INDIRECT函数将文本转换为单元格引用或地址。它不会将公式转换为文本并吐出公式的结果。 Macros Vos在他的回答中是正确的,因为FORMULATEXT()会将引用单元格中的公式显示为文本或字符串。如果您需要按照提供字符串的顺序进行操作,然后必须将字符串转换为公式,那么我建议您使用EVALUATE函数。但是,您不能使用常规excel公式中的EVALUATE。您可以从命名范围调用它。创建命名范围。比如让我们称之为EvalText。在用于创建命名范围的公式部分中,输入:

=EVALUATE($B$4)

它会自动添加工作表名称。现在,您可以在工作表的任何单元格中输入:

=EvalText

它将返回B4中的任何字符串作为公式。如果它不是一个合适的excel公式,它将吐出一个错误。

答案 1 :(得分:0)

为什么不反过来呢?

把:

=TRIM(CONCATENATE(B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2))

在单元格B6和

=FORMULATEXT(B6)

在单元格B4中。

答案 2 :(得分:0)

名为“ Range”的问题是它不属于Recalc-Loop。 在VBA中定义功能

Function MyEval(text As String)
    MyEval = Evaluate(text)
End Function

并添加

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.CalculateFull
End Sub

到正在考虑的工作表的代码表中 解决了问题。 当然,该工作簿还不能另存为XLSM。