假设我在单元格A1
中有一个函数名称,如SUM
,以及B1
和C1
中的一些数据。有没有办法在一个单元格中定义一个公式,以便它调用A1
中定义的公式,并将其作为数据用于B1
和C1
?
类似于:
=A1(B1:C1)
应该等于=SUM(B1:C1)
,因为A1
中包含单词SUM
。
基本上,像C中的预处理器宏或函数指针可能。
答案 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