说我在小区有一个函数的名称A1,如SUM,在某些数据B1和C1.有没有办法在一个单元格中定义一个公式,以便它调用在其中定义的公式A1并将其作为数据B1并C1作为数据?
因此,像:
=A1(B1:C1)应该等于=SUM(B1:C1)自A1包含单词SUM在里面.
基本上,像C中的预处理器宏或函数指针可能.
您可以通过在模块中创建用户定义的函数来使用vba来执行此操作:
Public Function applyFunction(functionName As Range, argument As Range) As Variant
applyFunction = Evaluate(functionName & "(" & argument.Address & ")")
End Function
Run Code Online (Sandbox Code Playgroud)
如果你SUM输入A1,并且B1,B2,B3中的1,2,3 =applyFunction(A1,B1:B3)将返回6.它相当于呼叫=SUM(B1:B3).
编辑
如果你真的不想使用VBA,你可以创建一个名称(在excel 2003中插入名称我认为,在Excel 2010中定义名称):
eval1)=EVALUATE(A1&"(B1:B3)"),其中A1包含SUM和B1:B3是具有数字的范围=eval1并返回结果但这种方法不够灵活.