2012-04-24 58 views
4

假设我在单元格A1中有一个函数名称,如SUM以及B1C1中的一些数据。是否有任何方法可以在一个单元中定义公式,以便它调用A1中定义的公式,并将其作为数据在B1C1上运行?评估在另一个单元格中定义的公式

因此,像:
=A1(B1:C1)应该等于=SUM(B1:C1)因为A1包含在它的词SUM

本质上,类似于C中的预处理器宏或函数指针。

回答

5

你可以做使用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它应该返回结果

但是这种方法不够灵活。

+0

非常好,assylias!你击败了我与VBA功能一拳:) – 2012-04-24 17:27:42

+0

谢谢!有没有任何可能的方法来做到这一点,而不使用VBA功能?如果可能的话,我一直想避免它。 – 9a3eedi 2012-04-24 17:31:14

+0

@ 9a3eedi我不认为有一个内置函数可以做到这一点。也许别人会这样做。你不想使用VBA的具体原因? – assylias 2012-04-24 17:37:03

1

如果您想要使用公式,可以使用SUBTOTAL()函数。但是,这是有限的。

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

看看这个链接获取更多信息: http://office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx

enter image description here

+0

不知道为什么会得到低估 - 这可能是一个明智的方法,取决于OP的要求。 – assylias 2012-04-24 17:49:00

+0

我不知道为什么我会选择downvoted。我认为这很有帮助。这就像是连续第二次。使我不想发布任何东西了:P – 2012-04-24 17:52:37

+1

有人可能会认为这只是一个部分答案,因为它不包括其他功能,但我认为它不值得downvote +这是downvoters留下评论的好习惯如果真的有错,或者如果部分错误,可以将其删除。继续发帖,不要忘记,downvote是-2与upvote +10;) – assylias 2012-04-24 17:55:09

相关问题