假设我在单元格A1
中有一个函数名称,如SUM
以及B1
和C1
中的一些数据。是否有任何方法可以在一个单元中定义公式,以便它调用A1
中定义的公式,并将其作为数据在B1
和C1
上运行?评估在另一个单元格中定义的公式
因此,像:
=A1(B1:C1)
应该等于=SUM(B1:C1)
因为A1
包含在它的词SUM
。
本质上,类似于C中的预处理器宏或函数指针。
假设我在单元格A1
中有一个函数名称,如SUM
以及B1
和C1
中的一些数据。是否有任何方法可以在一个单元中定义公式,以便它调用A1
中定义的公式,并将其作为数据在B1
和C1
上运行?评估在另一个单元格中定义的公式
因此,像:
=A1(B1:C1)
应该等于=SUM(B1:C1)
因为A1
包含在它的词SUM
。
本质上,类似于C中的预处理器宏或函数指针。
你可以做使用VBA它通过一个模块中创建用户定义的函数:如果你把在A1 SUM
,1,2,3 B1,B2,B3
Public Function applyFunction(functionName As Range, argument As Range) As Variant
applyFunction = Evaluate(functionName & "(" & argument.Address & ")")
End Function
,=applyFunction(A1,B1:B3)
将返回6.相当于拨打=SUM(B1:B3)
。
编辑
如果你真的不想使用VBA,可以创建一个名称(在2003年Excel中插入的名字,我想,在Excel中定义名称2010):
eval1
)在指区域=EVALUATE(A1&"(B1:B3)")
,其中A1包含SUM和B1:B3是用数字的范围中的空白单元格=eval1
它应该返回结果但是这种方法不够灵活。
如果您想要使用公式,可以使用SUBTOTAL()函数。但是,这是有限的。
查看图片。它使用对小计的函数编号的引用。如果要使用函数的名称,则可以通过创建一个vlookup函数来扩展此功能,但还必须提供一种方法来确定使用常规函数num或忽略数据范围中隐藏值的101型值。
看看这个链接获取更多信息: http://office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx
不知道为什么会得到低估 - 这可能是一个明智的方法,取决于OP的要求。 – assylias 2012-04-24 17:49:00
我不知道为什么我会选择downvoted。我认为这很有帮助。这就像是连续第二次。使我不想发布任何东西了:P – 2012-04-24 17:52:37
有人可能会认为这只是一个部分答案,因为它不包括其他功能,但我认为它不值得downvote +这是downvoters留下评论的好习惯如果真的有错,或者如果部分错误,可以将其删除。继续发帖,不要忘记,downvote是-2与upvote +10;) – assylias 2012-04-24 17:55:09
非常好,assylias!你击败了我与VBA功能一拳:) – 2012-04-24 17:27:42
谢谢!有没有任何可能的方法来做到这一点,而不使用VBA功能?如果可能的话,我一直想避免它。 – 9a3eedi 2012-04-24 17:31:14
@ 9a3eedi我不认为有一个内置函数可以做到这一点。也许别人会这样做。你不想使用VBA的具体原因? – assylias 2012-04-24 17:37:03