评估包含命名范围的文本

时间:2013-02-11 15:05:15

标签: excel excel-formula

如何评估包含命名范围的文本字符串? 我尝试EVAL,EVALUATE和INDIRECT没有成功。

多一点..

对于另一个系统,我有50多个包含200多个变量的公式,下面是一个例子:

<ABC>+<DEF>/<TRE-1>

为了能够在Excel中一次性使用它们而无需手动更改每个公式,变量和运算符,我使用几个(或更多)SUBSTITUTE公式来呈现Excel可能能够消化的字符串:

=ABC+DEF/TRE_1

我将所有变量引用到命名范围。例如:

ABC是细胞B2,值5.4

DEF是细胞B3,值3.2

TRE_1是单元格B4,值1

但是我无法通过INDIRECT或EVALUATE获得结果字符串。 它只是给我一个#NAME或#REF错误,因为它似乎无法将变量识别为命名范围(因此也是一个值)。

有什么想法吗?

我不想在VBA中实现它。我知道可以使用.RefersTo方法..

3 个答案:

答案 0 :(得分:4)

尝试使用以下语法:

=INDIRECT("ABC")+INDIRECT("DEF")/INDIRECT("TRE_1")

注意引用。似乎INDIRECT的工作原理是:=INDIRECT("ABC+DEF")返回#REF!

另见此示例:https://www.dropbox.com/s/jxj7cgjmnx8iv0t/INDIRECTwithNamedRegions.xlsx

答案 1 :(得分:0)

INDIRECT dows不评估公式,只评估引用:您需要使用Evaluate,但这只能通过XLM或COM接口使用。
您可以在定义的名称公式中嵌入Evaluate,但这种方法通常是不切实际的。

答案 2 :(得分:0)

VBA解决方案(如herehere所示)是在当前工作簿的模块内设置UDF(用户定义函数),例如:

Function Eval(ByVal S As String) As String

Eval = Evaluate(S)

End Function

将变量设置为命名范围,在单元格中输入:

 =Eval("ABC+DEF/TRE_1")

它会正确弹出结果。

现在..我不想使用VBA ......