评估另一个单元格中定义的公式
假设我在单元格A1
有一个函数名,比如SUM
,还有一些数据在B1
和C1
。 有没有办法在一个单元格中定义一个公式,以便它调用在A1
定义的公式,并将它作为B1
和C1
作为数据工作?
所以像这样:
=A1(B1:C1)
应该等于=SUM(B1:C1)
因为A1
其中包含字SUM
。
基本上,像C中的预处理器macros或函数指针可能是这样的。
你可以通过在模块中创build一个用户定义的函数来使用vba:
Public Function applyFunction(functionName As Range, argument As Range) As Variant applyFunction = Evaluate(functionName & "(" & argument.Address & ")") End Function
如果在A1中放置SUM
,而B1,B2,B3, =applyFunction(A1,B1:B3)
则返回6.这相当于调用=SUM(B1:B3)
。
编辑
如果你真的不想使用VBA,你可以创build一个名称(在Excel 2003中插入名称,我想,在Excel 2010中定义名称):
- 定义一个新的名字(比方说
eval1
) - 在引用区域中,input
=EVALUATE(A1&"(B1:B3)")
,其中A1包含SUM,B1:包含数字的范围 - 在一个空白单元格中input
=eval1
,它应该返回结果
但是这种方法不够灵活。
如果您想要使用公式,则可以使用SUBTOTAL()函数。 但是,这是有限的。
看看图像。 它使用对小计的函数编号的引用。 如果要使用函数的名称,可以通过创build一个vlookup函数来扩展它,但是还必须提供一种方法来确定使用常规函数num或忽略数据范围中隐藏值的101型值。
看看这个链接的更多信息: http : //office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx