2013-02-11 70 views
3

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

多一点..

对于另一个系统,我有50多个公式与200多个变量,一个例子如下:

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

为了能够使用所有这些在一次Excel中,而无需手动更改每一个公式,变量和运营商,我用一对夫妇(或更多)的替代公式来呈现一个字符串,Excel中可能能够消化:

=ABC+DEF/TRE_1 

我引用的所有variab les到命名的范围。为例如:

ABC是细胞B2,值5.4

DEF是细胞B3,值3.2

TRE_1是细胞B4,值1

但随后我不能得到所得到的字符串使用INDIRECT或EVALUATE进行评估。 它只是给了我一个#NAME或#REF错误,因为它似乎并不能将该变量识别为命名范围(因此也是一个值)。

任何想法?

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

+0

+1的不平凡的麻烦 – 2013-02-11 15:35:45

回答

0

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

4

尝试使用此语法:

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

注重引号。似乎是如何INDIRECT作品:=INDIRECT("ABC+DEF")回报#REF!

参见本示例:https://www.dropbox.com/s/jxj7cgjmnx8iv0t/INDIRECTwithNamedRegions.xlsx

+0

这个答案应该成为公认的答案,在间接的字符串是一个单元格引用,而不是一个公式(因为“间接”代表“间接参考”)。如果参考文件是一个命名范围,那么参考文件的确会评估。'= INDIRECT( “NamedRange1”)+ INDIRECT( “NamedRange2”)'作品。 – 2013-02-11 15:46:15

+0

感谢您的反馈,但是这仅仅是50岁以上的公式我有,我需要这个以精简的方式工作之一,所以我不能用几个Indirects。我将编辑该问题。 – 2013-02-11 15:46:27

+0

@bb_pt你最好提交一个新的,以避免混淆 - 已经提交执行时,它不会被编辑 – 2013-02-11 15:57:18

0

的VBA解决方案(如图herehere)是当前一个模块内设置的UDF(用户自定义函数)工作簿作为例如:

Function Eval(ByVal S As String) As String 

Eval = Evaluate(S) 

End Function 

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

=Eval("ABC+DEF/TRE_1") 

它会正确地弹出结果。

现在..我不希望使用VBA ...

+0

刚才的答案,我注意到它可能是有用的“Application.Volatile”添加到该UDF代码要重新计算每一个计算发生(而不是输入式仅当)的时间。 – 2013-02-12 09:45:11