评估在另一个单元格中定义的公式

时间:2012-04-24 17:15:52

标签: excel xlm

假设我在单元格A1中有一个函数名称,如SUM,以及B1C1中的一些数据。有没有办法在一个单元格中定义一个公式,以便它调用A1中定义的公式,并将其作为数据用于B1C1

类似于:
=A1(B1:C1)应该等于=SUM(B1:C1),因为A1中包含单词SUM

基本上,像C中的预处理器宏或函数指针可能。

2 个答案:

答案 0 :(得分:5)

您可以通过在模块中创建用户定义的函数来使用vba来执行此操作:

Public Function applyFunction(functionName As Range, argument As Range) As Variant
    applyFunction = Evaluate(functionName & "(" & argument.Address & ")")
End Function

如果你将SUM放在A1中,而将1,2,3放在B1,B2,B3中,则=applyFunction(A1,B1:B3)将返回6.这相当于调用=SUM(B1:B3)

编辑

如果您真的不想使用VBA,可以创建一个名称(在excel 2003中插入名称,我认为,在Excel 2010中定义名称):

  • 定义新名称(假设为eval1
  • 在引用区域中,输入=EVALUATE(A1&"(B1:B3)"),其中A1包含SUM和B1:B3是带数字的范围
  • 在空白单元格中,键入=eval1,它应返回结果

但这种方法不够灵活。

答案 1 :(得分:1)

如果您想使用公式,则可以使用SUBTOTAL()函数。但是,它有点受限。

查看图片。它使用对小计的函数编号的引用。如果要使用函数名称,可以通过创建vlookup函数来扩展它,但是您还必须提供一种方法来确定使用常规函数num或忽略数据范围中隐藏值的101类型值

点击此链接了解更多信息: http://office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx

enter image description here