2012-04-24 55 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

相關問題