【问题标题】:excel 4.0 macro evaluateexcel 4.0 宏评估
【发布时间】:2018-05-18 14:59:42
【问题描述】:

我正在尝试评估 Excel 中的一个方程式,其中运算由单元格的值决定。例如,假设我在A2 中有一个方程,它是100 (operation) 100。我希望对该单元格进行评估,以便if A1 = 1, then 100*100, if 2 then 100/100, if 3 then 100+100, if 4 then 100-100。我能够想出一个解决方案,使用VLOOKUP 来确定操作,连接以将数字与操作结合起来,并在命名范围内使用 Excel 4.0 宏函数 EVALUATE 将文本字符串评估为数字。

现在,我想在 VBA 中做同样的事情(我仍然有操作查找表,即 Excel 表中的1 = *2 = / 等)。如果没有 if/then/else 语句,有什么方法可以做到这一点?

【问题讨论】:

  • yup 使用worksheets().evaluate("String"),您可以将操作数加载到数组中,并使用 A1 中的值引用数组。
  • 您也可以在命名公式中使用评估并绕过 VBA...但是您的工作簿需要保存为 XLSM,因为 EVALUATE 是旧的 VBA 内置函数...或类似的东西效果。

标签: vba excel excel-formula


【解决方案1】:
Function Eval(eq, op)
    Eval = Application.Evaluate("=" & Replace(eq, "(operation)", Mid("*/+-", op, 1)))
End Function

如果您的等式包含单元格引用,请务必使用Worksheet.Evaluate 表单,范围为正确的工作表...

【讨论】:

    【解决方案2】:

    另一种方法,使用选择案例:

    Function Calc(eq As Integer, op As Double) As Double
        Select Case eq
            Case 1: Calc = op * op
            Case 2: Calc = op / op
            Case 3: Calc = op + op
            Case 4: Calc = op - op
            Case Else: Calc = 0
        End Select
    End Function
    

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多