3

如何评估包含命名范围的文本字符串?我尝试了 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 方法是可能的。

4

3 回答 3

4

尝试使用以下语法:

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

注意报价。似乎是这样INDIRECT工作的:=INDIRECT("ABC+DEF")返回#REF!

另请参阅此示例:https ://www.dropbox.com/s/jxj7cgjmnx8iv0t/INDIRECTwithNamedRegions.xlsx

于 2013-02-11T15:30:16.260 回答
0

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

于 2013-02-11T15:12:56.863 回答
0

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

Function Eval(ByVal S As String) As String

Eval = Evaluate(S)

End Function

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

 =Eval("ABC+DEF/TRE_1")

它会正确弹出结果。

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

于 2013-02-11T18:00:58.473 回答