Excel 将文字文本转换为公式

Excel 将文字文本转换为公式,excel,text,excel-formula,excel-indirect,Excel,Text,Excel Formula,Excel Indirect,使用MS Excel 2010:我使用连接公式创建了一个看起来像公式的文本字符串,需要一个将文本字符串转换为公式的公式;不使用MS Excel粘贴特殊功能或VBA/宏 示例:在单元格B2:G2中包含文本,在单元格B4中,我有一个串联文本公式,返回文本字符串 =TRIM(CONCATENATE(B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2)) 我希望Exce

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

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

=TRIM(CONCATENATE(B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2))
我希望Excel将此字符串解释为一个公式,并将单元格B6中的值返回/显示为:“永远做你自己……不要出去寻找成功的个性并复制它。”-李小龙

我尝试使用
间接
公式,但没有成功,不确定这是我的公式还是可能的。示例:单元格B6:

=INDIRECT(CONCATENATE("B4"))

为什么不反过来做呢

付诸表决:

在细胞B6和

=FORMULATEXT(B6)

在单元格B4中。

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

=TRIM(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(CONCATENATE(B2)," "),C2)," "),D2)," "),E2)," "),F2)," "),G2)," "),H2))
如果您要写出CONCATENATE for your function,那么将所有您想要连接在一起的字符串分离,就像@MarcoVos在对您的问题的评论中指出的那样:

=CONCATENATE(B2," ",C2," ",D2," ",E2," ",F2," ",G2," ",H2)
或者,如果您想使用更常见的形式,您的公式将与您最初发布的公式类似,而不使用连接,如下所示:

=B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2
最后两个公式将产生相同的结果

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

=EVALUATE($B$4)
它将自动添加工作表名称。现在,您可以在工作表的任何单元格中输入:

=EvalText

它将返回B4中作为公式的字符串。如果它不是正确的excel公式,它将抛出一个错误。

命名的“Range”的问题是它不是Recalc循环的一部分。 定义(在VBA中)函数

Function MyEval(text As String)
    MyEval = Evaluate(text)
End Function
及加入

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.CalculateFull
End Sub
到正在考虑的工作表的代码表 解决了这个问题。
当然,工作簿没有保存为XLSM。

a)您没有正确地使用。b)我认为不会按照您的要求执行。@Jeeped是对的。您没有连接任何内容,因为(B2&&&&C2&&D2&&E2&&F2&&G2&&H2)allready是一个连接字符串。这是正确的方法:=连接(B2,,,C2“,D2,”,E2,”,F2,“,G2,”,H2)串联和“&”是同一件事。你做一个或另一个。您所做的是首先使用&合并所有文本,然后要求连接函数将单个字符串合并为单个字符串。在函数EVALUATE上进行搜索。你不能像调用其他函数一样,只需将其放入电子表格中的公式中,但你可以在命名范围内调用它。您好,感谢间接函数。我一直在使用大型数据库,在那里我需要使用基于日期的vlookup函数。每次我都要用vlookup公式手工编辑日期。但现在使用间接函数,我可以简单地更快地使用功,使用间接函数将日期转换为文本,并在vlookup公式中使用。非常感谢所有解释间接函数将文本转换为公式的人。很抱歉,我无意中没有提供位于单元格B4中的正确文本字符串。这里是实际的公式文本:=连接(=修剪(连接(B2&&&&&C2&&D2&&E2&&F2&&G2&&H2)))我需要或想要转换成一个实际的公式,在单元格B6中输出结果。。。希望这有助于我注意到name范围中的EVALUATE()不是自动计算。它不会随着文本的更改而自动更新。必须转到单元格并按F2回车键来更新值。但是好主意,我喜欢这个解决方案。如果您的工作表设置为自动更新,它实际上应该自动更新。
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.CalculateFull
End Sub