【问题标题】:How to make a cell equal to the value of an expression in another cell (Excel 2010)?如何使一个单元格等于另一个单元格中表达式的值(Excel 2010)?
【发布时间】:2012-12-24 00:41:46
【问题描述】:

我正在处理电子表格,我正在尝试做这样的事情:

Price Returned      Net Profit

22                  22
45                  45
7                   7
25+25               50

数据作为表达式输入,表示特定项目的返回值。我想不通的是如何使下一个单元格等于第一个单元格的表达式值,所以基本上就像单元格是“=22”和“=25+25”。任何帮助将不胜感激。

【问题讨论】:

    标签: excel


    【解决方案1】:

    对于这样简单的事情,你可以制作一个 UDF:

    Function Evalu8(ByVal S As String) As String
        Evalu8 = Evaluate(S)
    End Function
    

    调用,如=Evalu8(A4)

    不幸的是,没有内置的工作表函数可以为您完成这项工作,但 VBA Evaluate function 可以节省时间。

    【讨论】:

    • 是的,但它是如此简单:)。 +1
    • 谢谢丹尼尔,我会假装知道这意味着什么,然后添加它:) 你会很高兴知道你的解决方案有效!
    【解决方案2】:

    你的问题引发了我对这个SO question 和@iDevlop 的回答的记忆,这导致了this post(这反过来又与斯蒂芬布伦的网页有一个死链接)。

    基本上,您可以使用 Evaluate 函数,它实际上是一个未记录的 Microsoft XLM 宏。您必须以定义的名称使用它,否则您将收到“函数无效”错误消息。由于它确实是一个宏,因此它所在的工作簿需要保存为 .xlm 并且必须启用宏才能使其工作。如果所有这些都对您有用,那么您就是这样做的(如果没有,请查看上述 SO 问题的已接受答案,或@Daniel Cook 的答案,在我处理此答案时弹出):

    1. 在计算工作表中选择 B1(本 示例)
    2. 单击 Ctrl-F3 打开 Excel 的名称管理器
    3. 创建一个新名称并将其命名为EvaluateCellToLeft
    4. 将范围设置为 Sheet1
    5. 在引用框中,输入=evaluate(Sheet1!A1)

    这是它在 Excel 2010 中的外观:

    现在在 B 列中输入 =EvaluateCellToLeft。请记住,这是一个命名范围,而不是公式,所以末尾没有括号。

    【讨论】:

    • 实际上,我想不出任何理由来做这一切,而不仅仅是添加一个像@Daniel Cook's 这样的宏。您对此具有相同的宏启用要求并且灵活性较低,即,您必须使用名称来指定要评估的单元格。有了他,您可以将其放入插件中,避免宏启用要求,我不确定您是否可以这样做。谁知道有一天 Excel 4 宏会被停用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多