【问题标题】:How can I use nested evaluate function in excel如何在excel中使用嵌套评估函数
【发布时间】:2019-08-11 02:32:33
【问题描述】:

是否可以在“名称管理器”中创建一个新名称并引用 - 评估其中包含函数但函数本身包含一个或多个变量的单元格,该变量也使用“名称管理器”中定义为名称评估功能? 我试过了,但它给了我一个“#Value!”警告。

假设有两个函数:x = 1 + 1;和 y = x + 1。 我想得到结果x和y。 所以我把 1+1 放在单元格 A1 中,然后转到名称管理器并创建一个名为 x 的名称并引用:=if(NOW(),evaluate(A1))。然后转到单元格 B1 并输入 =x,它会显示 2 的结果。好的,它适用于 x。 然后我将 x+1 放在单元格 A2 中,然后转到名称管理器并创建一个名为 y 的名称并引用 =if(NOW(),evaluate(A2))。然后转到单元格 B2 并输入 =y 但它显示#VALUE!错误

我希望它会给我 3 的结果。有没有人会导致这个错误以及如何解决它?谢谢。

【问题讨论】:

  • 你真的需要使用 EVALUATE() 吗?对于您的示例,定义 Namexp1=1+1 和 Namexp2=nameexp1+1 工作正常。 (旧的 XLM EVALUATE 函数存在许多错误/怪癖)
  • 嗨,Charles,上面的函数只是示例,以便于理解。事实上 1+1 是另一个包含在 Name Manger 中定义的变量的函数。一开始我以为是因为不允许多次使用evaluate。但后来我为 y 尝试了以下方法,它奏效了。 =if(现在(),评估((评估(A1)+1)))。所以我想不出我原来的方法不起作用的任何原因。 (我也需要在其他函数中使用变量 x)
  • EVALUATE 有很多限制:您可能遇到了其中之一。您还没有解释为什么需要使用 Evaluate。顺便说一句,您最多可以将名称嵌套到 64 级。但是名称引用的循环链(NameA 指的是 NameB,NameB 指的是 NameA)导致 Excel 因堆栈溢出而崩溃

标签: excel evaluate


【解决方案1】:

可能是您没有锁定单元格引用。如果您的命名范围包含绝对引用(即带有$ 符号),则一切正常:

但是,如果您正在使用相对引用,并且在选择第 1 行中的单元格时创建了 y 值,那么 - 一旦您移动到单元格 B2 - 您的相对引用将转移到第 3 行。由于单元格A3 为空,结果是#VALUE! 错误消息。

换句话说,如果您在使用A2 相对引用创建命名范围时选择了单元格B1,那么一旦您选择单元格B2,它将转移到单元格A3

选择单元格 B1 时的屏幕截图 #1:

选择单元格 B2 时的屏幕截图 #2:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多